代码之家  ›  专栏  ›  技术社区  ›  Levente Otta

Laravel 5.5自定义刀片提供程序if语句

  •  2
  • Levente Otta  · 技术社区  · 8 年前

    我想创建一个自定义刀片提供程序来清理我的代码。

    public function boot() {
        Blade::if ('hasError', function ($field) {
            return session('errors')->has($field);
        });
    }
    

    这是我在视图中使用的方式:

    @hasError('email') has-error @endif
    

    但我收到了以下错误消息:

    调用成员函数has()为null。。。

    有人知道吗?

    3 回复  |  直到 8 年前
        1
  •  0
  •   Alexey Mezenin    8 年前

    而不是:

    return session('errors')->has($field);
    

    执行以下操作:

    return session()->has('errors.' . $field);
    
        2
  •  0
  •   user8563382 user8563382    8 年前
    if($validator->fails()) {
       return session()->has('errors.' . $field);
    

    您可以使用

    @if ($errors->any())
            {{ implode('', $errors->all('<div>:message</div>')) }}
    @endif
    

    更新

    要在每个字段下显示错误,可以这样做。

    <input type="text" name="firstname">
    @if ($errors->has('firstname'))
        <div class="error">{{ $errors->first('firstname') }}</div>
    @endif
    
        3
  •  0
  •   Daniel Gale    8 年前

    当前这与视图中的内容相同:

    @if (session('errors')->has('email'))
     has-error
    @endif
    

    使用Blade::if指令,如果您希望在视图中显示:

    @hasError('email')
     has-error
    @endhasError
    

    从Laravel 5.5开始,在引导方法中应该有如下内容:

    use Illuminate\Support\Facades\Blade;
    public function boot() {
    
    Blade::if('hasError', function ($field) {
        if(session()->has($field){
            /* some validation code 
             if(validation){return true}else{return false;}
            */
        }else{
           return false;
        }
    });
    

    Example

    Documentation