如果Input :: old为空,则输入Laravel替代值

时间:2014-04-29 06:41:08

标签: php laravel laravel-4

Laravel中是否有任何实用程序功能允许您在旧值为空时为特定输入字段提供替代值?目前我有以下代码:

<input type="text" class="form-control" id="title" name="title" value="{{ (!empty(Input::old('title'))) ? Input::old('title') : 'hey' }}">

但它并不是那么漂亮。有什么想法吗?

2 个答案:

答案 0 :(得分:10)

使用

Input::old('title', 'fallback value')

答案 1 :(得分:0)

是的!请勿使用input代码:)

如果你使用{{ Form,你会得到这个,还有更多!

{{ Form::text('email', null, array('class'=>'form-control', 'placeholder'=>'Email Address')) }}

查看此处的文档(http://laravel.com/docs/html&amp; http://laravel.com/docs/requests),您会注意到,当输入闪现到会话时,刀片呈现的此输入框将自动替换&#34;空&#34; (第二个参数),带有会话中的闪烁值。

这样就无需检查旧输入或在模板中进行任何讨厌的if / else检查。此外,您不再需要担心任何HTML代码注入或XSS发生,因为Form :: text将确保文本正确转换为其HTML实体。


如果您要检查错误,则应使用Laravel验证程序。类似的东西:

protected function createUser(){

$rules = array(
    'email'=>'required|email',
    'password'=>'required|min:6|confirmed',
    'password_confirmation'=>'required'
);

$validator = Validator::make(Input::all(), $rules);

if (! $validator->passes()) {
    Input::flashExcept('password', 'password_confirmation');
    return Redirect::to('my_form');
} else {
    // do stuff with the form, it's all good
}

return Redirect::intended('/complete');
}

此外,在您的模板中,您可以显示表单中的所有错误:

<ul>
    @foreach($errors->all() as $error)
        <li>{{ $error }}</li>
    @endforeach
</ul>

或者只选择第一个错误并将其显示在{{ Form::text

@if ($errors->has('first_name'))
       <span class="error">{{$errors->first('first_name')}}</span>
@endif

Laravel内置了所有内容,您可以免费获得!使用请求,验证器,刀片/ HTML