form example collective php frameworks laravel php-5.3 laravel-4

php - example - laravel form builder



Laravel 4 Form builder Campos personalizados Macro (5)

Estoy tratando de crear un campo de fecha HTML 5 personalizado para usar en una vista de marco laravel 4.

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

El único problema es que el valor no se está rellenando, y no sé cómo hacer esto.

Estoy usando este formulario para crear y editar un modelo llamado Evento.

¿Cómo puedo poblar el valor de este campo?


Esto es lo que hice:

en mi opinión, agregué la siguiente macro

<?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) }}


He encontrado otra manera de hacer esto, que es poner mis macros en un archivo llamado macros.php luego colocarlo en la app/ directorio junto con filters.php y routs.php , luego en la app/start/global.php agregué la siguiente línea al final

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

esto cargará sus macros después de que la aplicación haya comenzado y antes de que se construya la vista. se emparejó más y siguiendo la convención de Laravel porque esta es la misma forma que usa Laravel para cargar el archivo filters.php .


esto funciona para mí:

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

en lugar de hacer

foreach($options)

puedes usar

HTML::attributes($options)


Usar una macro no es necesario. Simplemente use el método de Form::input built-up de Laravel que define la date como su tipo de entrada deseado:

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

Esto parece no estar en los documentos principales, pero está en los documentos de API como se relacionó anteriormente.


Agregué en app / start / global.php lo siguiente:

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; });

Pero la "buena manera" sería extender la clase de formulario e implementar sus métodos.