我正在尝试创建 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/