如何用单行代码插入Laravel Blade模板的表格元素?
问题原因
你在子视图中使用了@section + @show的写法,Laravel的@section是全局作用域的,首次定义完成后,后续重复引入同一个包含@section的视图时,不会重新渲染section内容,因此两次@include调用都会输出第一次渲染的结果。
另外你原有代码里name={{$name}}没有加引号,建议补充上引号,避免参数带空格时出现HTML结构错误。
解决方案1(最简修改)
直接删掉子视图中的@section和@show包裹即可,你这个场景不需要用到section功能,子视图内容可以直接输出:util/insert.blade.php修改后代码:
<tr> <th> {{ $th }} </th> <td> <input type="text" name="{{ $name }}" value="{{ $val }}"> </td> </tr>
main.blade.php的代码不需要做任何修改,直接运行即可得到预期的两个不同的表格行。
解决方案2(更规范的组件化写法)
如果使用的是Laravel 8及以上版本,更推荐用Blade匿名组件实现这类可复用元素,可维护性更高:
- 新建
resources/views/components/table-input-row.blade.php文件,写入上面的表格行代码 - 在main.blade.php中直接用标签语法调用即可:
<table class="table"> <x-table-input-row th="th1" name="name1" val="val1" /> <x-table-input-row th="th2" name="name2" val="val2" /> </table>
内容的提问来源于stack exchange,提问作者takeyama
相关产品推荐
相关产品推荐

