Вы можете установить атрибуты HTML для самого <select>
, но как насчет <options>
?
Form::select('name', $options, null, ['class'=>'form-control'])
Первый параметр – это атрибут id
и name
, второй параметр – массив со значениями <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>
.
EDIT2: Вы должны построить что-то вроде этого:
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>
в представление с соответствующими атрибутами.