Intereting Posts

Laravel 4 Создатель форм Пользовательские поля Макро

Я пытаюсь создать пользовательское поле даты HTML 5 для использования в представлении структуры laravel 4.

{{ Form::macro('datetime', function($field_name) { return ''; }); }} {{ Form::label('event_start', 'Event Date', array('class' => 'control-label')) }} {{ Form::datetime('event_start') }} 

Единственная проблема заключается в том, что значение не заполняется, и я не знаю, как это сделать.

Я использую эту форму для создания и редактирования модели под названием Event.

как я могу заполнить значение этого поля?

Solutions Collecting From Web of "Laravel 4 Создатель форм Пользовательские поля Макро"

Вот что я сделал:

на мой взгляд, я добавил следующий макрос

 <?php Form::macro('datetime', function($value) { return '<input type="datetime" name="my_custom_datetime_field" value="'.$value.'"/>'; }); ... ... // here's how I use the macro and pass a value to it {{ Form::datetime($datetime) }} 

Я добавил в app / start / global.php следующее:

 Form::macro('date', function($name, $value = null, $options = array()) { $input = '<input type="date" name="' . $name . '" value="' . $value . '"'; foreach ($options as $key => $value) { $input .= ' ' . $key . '="' . $value . '"'; } $input .= '>'; return $input; }); 

Но «хорошим способом» будет расширение класса Form и реализация ваших методов.

Использование макроса не требуется. Просто используйте встроенный метод Form::input Laravel, определяющий date как желаемый тип ввода:

 {{ Form::label('event_start', 'Event Date', array('class' => 'control-label')) }} {{ Form::input('date', 'event_start', $default_value, array('class'=>'form-control')) }} 

Как представляется, это не относится к основным документам, но находится в документах API, как указано выше.

Я нашел другой способ сделать это, который помещает мои макросы в файл с именем macros.php затем помещает его в каталог app/ вместе с routs.php и routs.php , затем в app/start/global.php я добавил следующая строка в конце

 require app_path().'/macros.php'; 

это загрузит ваши макросы после того, как приложение запустится и до того, как будет построено представление. он сглаживается аккуратно и следует за соглашением Ларавеля, потому что это тот же самый способ, который использует Laravel для загрузки файла filters.php .

это работает для меня:

 Form::macro('date', function($name, $value = null, $options = array()) { $attributes = HTML::attributes($options); $input = '<input type="date" name="' . $name . '" value="' . $value . '"'. $attributes.'>'; return $input; }); 

вместо того, чтобы делать

  foreach($options) 

вы можете использовать

  HTML::attributes($options)