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

新手上路,请多包涵

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

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

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

原文由 pupadupa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 329
1 个回答

要检查 Laravel 刀片指令中是否存在变量,请执行以下操作:

 Blade::directive('datetime', function ($value) {

    return "<?php echo isset($value) ? ($value)->format('d/m/Y H:i:s') : null; ?>";

});

原文由 JulianoMartins 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题