检查 laravel 的刀片指令中是否存在变量

2022-08-30 10:32:50

我正在尝试创建刀片指令,其中回显变量(如果定义了变量)或回显“无数据”,如果变量未定义。

这是我的代码:AppServiceProvider.php

<?php

namespace App\Providers;

use Blade;
use Illuminate\Support\ServiceProvider;


class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Blade::directive('p', function($ex) {
            error_log(print_r($ex,true));
            return '<?php $defined_vars = get_defined_vars(); if(array_key_exists(\''. $ex .'\', $defined_vars) ): echo ' . $ex . ' ; else: echo \'no data\'; endif;?>';
        });
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

这是我的 index.blade.php:

<p class="lead">@p($myvar)</p>

但是我的指令“p”给出了“没有数据”,如果定义了变量。如果我使用 ISSET,则会发生错误:Cannot use isset() on the result of an expression (you can use "null !== expression" instead)

如果定义了变量,我如何检查内部指令?


答案 1

Blade 有一个指令来检查是否设置了变量:

@isset($var)

@endisset

答案 2

尝试检查变量是否为空:

@if(empty($myvar))
    <p>Data does not exist</p>
@else
    <p>Your data is here!</p>
@endif

也可以检查此线程


推荐