【问题标题】:how to define checkbox within the label in laravel如何在laravel的标签中定义复选框
【发布时间】:2015-01-29 02:05:23
【问题描述】:

我当前的代码

 {{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>

【问题讨论】:

    标签: php html laravel-4


    【解决方案1】:

    您可以为此创建一个宏!

    {{ 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

    这里有一些引导风格的宏:

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

    【讨论】:

    • 干杯伙伴!这些宏真的很有帮助。 @Rafael
    • 稍后会有更多内容。 @Naeem
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2012-04-07
    • 2020-12-22
    • 2017-07-27
    • 2011-12-22
    • 1970-01-01
    • 2011-10-04
    相关资源
    最近更新 更多