我是php框架的新手,我正在使用Laravel创建一个CRUD应用程序。问题是,当我尝试将类别的Id从DB传递到View中的值时,我得到错误:
htmlentities()期望参数1为字符串,给定数组(查看:C:\ wamp \ www \ vecrud \ resources \ views \ products \ create.blade.php)
控制器
public function create()
{
$products_create = categories::all()->lists('category');
$categ_id = categories::all()->lists('id');
return View::make('products.create', compact('products_create', 'categ_id'));
}
查看
{!! Form::label('category', 'Categorie') !!} <br />
{!! Form::select('category', $products_create, Input::old('category'), array('value' => $categ_id)) !!}
答案 0 :(得分:2)
值(id
)和选择选项(category
)的文本应该在同一个数组中。我想你正在寻找这个:
$category_list = categories::all()->lists('category', 'id');
return View::make('products.create', compact('category_list'));
查看:
{!! Form::select('category', $category_list, Input::old('category')) !!}
此外,您无需在all()
之前致电lists()
:
$category_list = Categories::lists('category', 'id');
答案 1 :(得分:1)
使用lists()
方法,第一个参数是数组值,可选的第二个参数是用于数组键的属性。因此,如果您想要使用主键键入的数据库中的值,则可以执行以下操作:
$options = $model->lists('name', 'id');
然后,您可以直接将此数组传递给select
表单助手:
Form::select('name', $options, null, ['class' => 'form-control']);
希望有所帮助!