php - 如何在 Laravel 标签内定义复选框

标签 php html laravel-4

我当前的代码

 {{Form::label('remember','Remember Me')}}
 {{ Form::checkbox('remember', 1, null, ['id'=>'remember', 'class' => 'className']) }}

正在生成 html

   <label for="remember">Remember Me</label>
   <input id="remember" class="className" name="remember" value="1" type="checkbox">

但我希望它像这样工作:

<label for="remember">Remember Me
       <input id="remember" class="className" name="remember" value="1" type="checkbox">
 </label>

最佳答案

您可以为此创建一个宏!

{{ Form::macro('myField', function($name,$value = 1, $id= null, $class, $label) {
return '<label for="'.$name.'">'.$label.'
        <input id="'.$id.'" class="'.$class.'" name="'.$name.'" value="'.$value.'" type="checkbox">
        </label>';
}); }}

这样调用它:

 {{ Form::myField('name','value','id', 'className', 'label') }}

我在这里找到了一些引导样式的宏:credits to JONOB laravel.io

以下是一些 Bootstrap 样式宏:

Form::macro('textField', function($name, $label = null, $value = null, $attributes = array())
{
    $element = Form::text($name, $value, fieldAttributes($name, $attributes));

    return fieldWrapper($name, $label, $element);
});

Form::macro('passwordField', function($name, $label = null, $attributes = array())
{
    $element = Form::password($name, fieldAttributes($name, $attributes));

    return fieldWrapper($name, $label, $element);
});

Form::macro('textareaField', function($name, $label = null, $value = null, $attributes = array())
{
    $element = Form::textarea($name, $value, fieldAttributes($name, $attributes));

    return fieldWrapper($name, $label, $element);
});

Form::macro('selectField', function($name, $label = null, $options, $value = null, $attributes = array())
{
    $element = Form::select($name, $options, $value, fieldAttributes($name, $attributes));

    return fieldWrapper($name, $label, $element);
});

Form::macro('selectMultipleField', function($name, $label = null, $options, $value = null, $attributes = array())
{
    $attributes = array_merge($attributes, ['multiple' => true]);
    $element = Form::select($name, $options, $value, fieldAttributes($name, $attributes));

    return fieldWrapper($name, $label, $element);
});

Form::macro('checkboxField', function($name, $label = null, $value = 1, $checked = null, $attributes = array())
{
    $attributes = array_merge(['id' => 'id-field-' . $name], $attributes);

    $out = '<div class="checkbox';
    $out .= fieldError($name) . '">';
    $out .= '<label>';
    $out .= Form::checkbox($name, $value, $checked, $attributes) . ' ' . $label;
    $out .= '</div>';

    return $out;
});

function fieldWrapper($name, $label, $element)
{
    $out = '<div class="form-group';
    $out .= fieldError($name) . '">';
    $out .= fieldLabel($name, $label);
    $out .= $element;
    $out .= '</div>';

    return $out;
}

function fieldError($field)
{
    $error = '';

    if ($errors = Session::get('errors'))
    {
        $error = $errors->first($field) ? ' has-error' : '';
    }

    return $error;
}

function fieldLabel($name, $label)
{
    if (is_null($label)) return '';

    $name = str_replace('[]', '', $name);

    $out = '<label for="id-field-' . $name . '" class="control-label">';
    $out .= $label . '</label>';

    return $out;
}

function fieldAttributes($name, $attributes = array())
{
    $name = str_replace('[]', '', $name);

    return array_merge(['class' => 'form-control', 'id' => 'id-field-' . $name], $attributes);
}

关于php - 如何在 Laravel 标签内定义复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27222101/

相关文章:

php - 如何更新mysql中的表单选择2行值

php - 进行刷新而不刷新整个页面

php_oci8_11g.dll 不是有效的 Win32 应用程序

php - 模型中的 “reporting”错误

html - 在 CSS 中嵌套 Flexbox

html - 在 chrome 中忽略分页后

PHP 没有收到单选按钮的值

php - 通过数据透视表进行 Eloquent or 查询

拉拉维尔 4 : Passing data from make to the service provider

php - 输入验证互斥或