php - 检查 laravel 的 Blade 指令中是否存在变量

标签 php laravel undefined laravel-5.2 directive

我正在尝试创建 blade 指令,它回显变量(如果变量已定义)或回显“无数据”(如果变量未定义)。

这是我在 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)

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

最佳答案

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

@isset($var)

@endisset

关于php - 检查 laravel 的 Blade 指令中是否存在变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425978/

相关文章:

php - 使用 PHP 从远程站点抓取时跟踪 Javascript 链接

php - 模板 Blade 中的 Laravel 语言处理程序

javascript - 在 javascript 中使用 != null 和 != undefined 之间有什么功能区别吗?

javascript - 在 Vue JS 中,从 vue 实例中的方法调用过滤器,但 $options 未定义

javascript - 除非信息填写正确,否则如何使提交按钮不可点击?

php - 使用 php foreach 提取 XML 不循环

php - 在 laravel 5.4 中,我怎样才能只获得用户 friend 的帖子?

php - 没有模型 [App\Products] Laravel 的查询结果

javascript - momentjs 在某些地方未定义

javascript - 提交验证错误的最大和步长