Laravel 5.5 Custom Blade Provider if语句

时间:2018-01-19 14:47:36

标签: php laravel laravel-5 blade provider

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

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

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

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

但我收到此错误消息:

  

调用成员函数has()on null ...

有人有想法吗?

3 个答案:

答案 0 :(得分:0)

而不是:

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

这样做:

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

目前在视图中与此相同:

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

使用Blade :: if指令,如果你想在你的视图中使用它:

define("CONSTANT","World !!");
$array=array(" Hello CONSTANT");

echo $array[0];

从Laravel 5.5开始,你的启动方法应该有这样的东西:

Hello World !!

Example

Documentation