Laravel 4表单生成自定义字段宏(Laravel 4 Form builder Custom

2019-09-01 07:08发布

我试着去创建一个自定义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') }}

唯一的问题是没有被填充的价值,我不知道如何做到这一点。

即时通讯使用这种形式来创建和编辑一个名为事件模型。

我怎么能填充这个字段的值?

Answer 1:

这是我做的:

在我看来,我添加了下面的宏

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


Answer 2:

我在应用程序/启动添加/ 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类和实现方法。



Answer 3:

使用宏是没有必要的。 只要使用Laravel内置的Form::input法定义date为您所需的输入类型:

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

这似乎不是在主文档,但是在API文档如上相连。



Answer 4:

我找到了另一种方式来做到这一点这是把我的宏在一档名为macros.php然后将其放置在app/连同目录filters.phprouts.php ,然后在app/start/global.php我加在端部的下面的行

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

该应用程序已经开始,构建视图之前在此之后,将载入您的宏。 它接缝整洁并按照Laravel的约定,因为这是同样的方式Laravel用于加载filters.php文件。



Answer 5:

这对我的作品:

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)


文章来源: Laravel 4 Form builder Custom Fields Macro