. Я пытаюсь создать директиву блейдов, которая является переменной echo (если определена переменная) или echo «no data», если переменная не определена.Проверьте, существует ли переменная в директиве blade-сервера 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>
Но моя директива "р" дает "нет данных", если переменная не определена. Если я использую ошибку isset: Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
Как проверить внутренние директивы, если определена переменная?
Так вы говорите, если (Исеть ($ MyVar)) не работает? –