12

要生成默认选中项目的下拉列表,请执行以下操作:

echo Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), 'S');

所以我生成了一个下拉列表,默认情况下选择了多个项目,方式如下:

echo Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), array('S', 'M'), array('multiple'));

但是如何获得多个选定的值?

Input::get('size')仅返回最后选择的字符串。

4

4 回答 4

36

首先,如果你想默认选择多个项目,你必须给出一个值数组作为第三个参数,而不是一个简单的值。

示例:

Form::select('size', array('L' => 'Large', 'M' => 'Medium', 'S' => 'Small'), array('S', 'M'), array('multiple'));

应该显示选择 S 和 M 的选择。

对于第二点,您应该尝试给出一个名称,size[]而不是size,它可以解决问题(因为您发布的选择不是一个简单的值,它是一个值数组)

于 2013-03-12T10:36:54.950 回答
14

通常的 Select 语句

<select name="select_name" id="select_name" multiple="multiple">

工作流程是 Laravel 通过名称获取表单元素。要使其工作,请将名称更改为数组。

<select name="select_name[]" id="select_name" multiple="multiple">

这将使 laravel 将 select 的值作为数据数组获取。

于 2016-03-01T11:39:38.640 回答
1

根据https://laravelcollective.com/docs/5.2/html#drop-down-lists

Form::select('size[]',['L' => 'Large', 'M' => 'Medium', 'S' => 'Small'], ['S', 'M'], ['multiple' => 'multiple', 'class' => 'form-control']);

顺便说一句,如果您希望能够将此字段用作后端中的数组,请注意下拉列表的名称( size[] )。

例如,当您想要使用关系作为价值时,事情会变得很棘手

models
user =>  common fields
size => id, name, slug  [
                         {id : 1 , name : Large, slug : L}, 
                         {id : 2 , name : Small, slug : S},
                         {id : 3 , name : Medium, slug : M}
                         ] 

user_size => id, user_id, size_id  [
                                     {id :1, user_id:1, size_id:1}
                                     {id :2, user_id:1, size_id:3}
                                   ]   

所以$user->colors会返回类似的东西

laravel collection

[
  USER_SIZE => [  'user_id' => 1 , size_id' => 1 ],
  USER_SIZE => [  'user_id' => 1, 'size_id' => 3 ]
]

你可以做类似的事情,记住User Model有一个sizes一对多的关系SIZE Model

Form::select('size[]',['L' => 'Large', 'M' => 'Medium', 'S' => 'Small'], $user->sizes->pluck('size')->pluck('slug')->toArray(), ['multiple' => 'multiple', 'class' => 'form-control']);

希望能帮助到你

于 2016-09-20T15:26:59.387 回答
0

正确的词是

采摘

在控制器中:

$skills = Skill::pluck('name', 'id');

$selectedSkills = $user->skills()->pluck('skill_user.id');

在刀片中:

Form::select('skills[]', $skills, $selectedSkills, ['class' => 'form-control', 'multiple' => 'multiple']) }}
于 2020-04-19T23:32:07.277 回答