web-dev-qa-db-ja.com

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」は「no data」を返します。 issetエラーが発生した場合:Cannot use isset() on the result of an expression (you can use "null !== expression" instead)

変数が定義されている場合、どのようにして内部ディレクティブをチェックできますか?

19
pupadupa

Bladeには、変数が設定されているかどうかを確認するためのディレクティブがあります。

@isset($var)

@endisset
22
sanchezcl

IssetをチェックするためにBlade機能で使用できます。

{{ $checkvariable or 'not-exist' }}

https://laravel.com/docs/5.2/blade#displaying-data

16
Ali

変数が空かどうかを確認してください:

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

このスレッド も確認できます

10
Connor Leech

Laravel 5.7以降の使用。

{{ $checkvariable ?? 'not-exist' }}

10
George John

ブレードに変数が存在するかどうかを確認する最良かつ最もクリーンな方法:

 {!! !empty($myvariable) ? $myvariable : 'variable does not exist' !!}
8
TechPotter

Laravel version> = 5.7

{{ $value ?? '' }}

Laravel version <5.7

{{ $value or '' }}
2
Puneet Verma

カスタムディレクティブに何を渡そうとしていますか?単なる文字列/整数の場合、次のように動作します。

Blade::directive('p', function($expression){
    $output = $expression ? $expression : 'nodata';
    return "<?php echo {$output}; ?>";
});

ブレードテンプレート内

@p('Foo')
2
Jeemusu

いくつかの異なる方法でそれを行うことができます。

サンプル-1:

@if( !empty($data['var']))
   {{ $data['var'] }} 
@endif

サンプル-2:

{{ $data['var'] or 'no data found' }}

サンプル-3:三項演算子の使用

<a href="" class="{{ ( ! empty($data['var'] ? $data['var'] : 'no data found') }}">
1

@emptyディレクティブは役に立つかもしれません:

@empty($var)
   $var is unset or false-y
@endempty
1
crishoj