如何从数据库取值预填充Laravel表单?解决语法错误问题
问题分析与解决方案
首先,咱们先搞清楚你直接嵌套{{listing->price}}为什么会报错:
你已经在Blade的{{ }}标签里调用Form::text()函数了,这时候内部已经是PHP执行环境,不需要再套一层{{ }}。嵌套的{{ }}会让Blade解析器误以为要开启新的echo输出,导致语法混乱,所以才会出现unexpected '}'的错误。
正确的最简解决方案
其实根本不需要绕弯子,直接把$listing->price作为Form::text()的第二个参数(默认值参数)传进去就行,因为在{{ }}内部可以直接使用PHP变量:
{{ Form::label('listing', 'Price:') }} {{ Form::text('price', $listing->price, ['class' => 'form-control', 'placeholder' => 'Price']) }}
这样表单加载时就会自动用$listing->price的值预填充输入框了。
关于你提到的修复方案
这个方案不仅没必要,而且本身存在语法错误,还达不到预期效果:
- 你写的
echo('{{Form::text('price',.$f. , ['class' => 'form-control', 'placeholder' => 'Price'])}}')里,字符串拼接的语法是错的(.的位置不对,引号也没正确闭合); - 更关键的是,用
echo输出Blade语法的话,Blade解析器不会再处理这段代码,只会把它当成纯文本输出到页面上,根本不会渲染成表单输入框,自然也没法预填充值。
所以完全不需要用这种复杂且错误的方式,直接用上面的最简方案就可以解决问题啦。
内容的提问来源于stack exchange,提问作者user9820353
相关产品推荐
相关产品推荐

