如何为使用laravel表单构建器创建的选择标记的选项指定HTML属性


How to specify HTML attributes for options of a select tag that is created using laravel form builder?

您可以为<select>本身设置HTML属性,但<options>呢?

Form::select('name', $options, null, ['class'=>'form-control'])

第一个参数是idname属性,第二个参数是值为<select>的数组,第三个参数是选择选项,第四个参数是HTML属性数组。如果您想设置name, class或其他HTML属性,只需将其放入数组中(不能使用数组设置id,必须使用第一个参数):

// View
{{ Form::select('selectname', $selectname, Input::old('selectname'), array('class'=>'form-control', 'name'=>'modified_name')) }}

EDIT1:我误解了这个问题,设置HTML属性到<option>的唯一方法是使用Form::macro并动态构建<option>标签。


编辑2:你应该建立这样的东西:

Form::macro('test', function($name, $list = array(), $options = array())
{
$build = array();
foreach ($list as $key => $value)
{
    $build[] = sprintf('<option id="%s" name="%s" class="%s" value="%s">%s</option>', $name, $name, $options['class'], $value->id, $value->name);
}
return join("'n", $build);
});

然后在视图中使用它:

{{ Form::open(array('url' => 'test')) }}
    {{ Form::test('test', $list, ['class' => 'form-control']) }}
{{ Form::close() }}
结果:

<option id="test" name="test" class="form-control" value="1">Test1</option>
<option id="test" name="test" class="form-control" value="2">Test2</option>
<option id="test" name="test" class="form-control" value="3">Test3</option>

您可以将<select>标签添加到宏中,并将其HTML属性的一些参数传递给函数,或者简单地将<select>标签添加到具有适当属性的视图中。