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.