如何拆分过长的表单action属性值?
拆分Blade模板中过长的form action属性值
问题场景
现有Blade模板中的form代码:
<form action="/schools/{{$school->id}}/classrooms/{{$classroom->id}}/assignments/{{$assignment->id}}" method="POST">
SonarCloud提示该行超过120字符上限,需要拆分。直接在引号内换行的尝试会导致URL包含换行符,请求无效:
<form action="/schools/{{$school->id}} /classrooms/{{$classroom->id}} /assignments/{{$assignment->id}}" method="POST">
正确处理方式
方式1:使用Blade字符串拼接
利用PHP字符串连接符.拆分字符串,Blade会自动拼接成完整无空格的URL:
<form action="/schools/{{ $school->id }}" . "/classrooms/{{ $classroom->id }}" . "/assignments/{{ $assignment->id }}" method="POST">
方式2:提前定义URL变量
在模板顶部将URL赋值给变量,再在form中引用,代码更简洁:
@php $actionUrl = "/schools/{$school->id}/classrooms/{$classroom->id}/assignments/{$assignment->id}"; @endphp <form action="{{ $actionUrl }}" method="POST">
方式3:使用Laravel命名路由(推荐)
如果项目中定义了对应路由名称,使用route()辅助函数生成URL,既解决长行问题,又符合Laravel最佳实践:
<form action="{{ route('assignments.assign', [$school->id, $classroom->id, $assignment->id]) }}" method="POST">
(注:需根据实际路由名称调整route()的第一个参数)
说明
直接在HTML属性引号内换行会将换行和缩进字符带入URL,导致请求地址错误。以上方法均不会引入多余字符,能正常生成正确的action URL。
内容的提问来源于stack exchange,提问作者Dom
相关产品推荐
相关产品推荐

