【问题标题】:Laravel - Is there any blade directive to check if a variable exists and is set to a specific value?Laravel - 是否有任何刀片指令来检查变量是否存在并设置为特定值?
【发布时间】:2019-11-05 10:20:45
【问题描述】:

Laravel Blade 提供了很多指令,但它是否有任何快捷方式来检查变量是否存在并设置为特定值?

现在我正在做这样的事情:-

 @if(isset($request['optional_columns']['reason']) && ($request['optional_columns']['reason'] === "true")
    // Do something ...
 @endif

模板现在看起来很乱,我想使用看起来整洁干净的东西。

【问题讨论】:

    标签: laravel laravel-blade


    【解决方案1】:

    回答我自己的问题: 我通过创建自定义刀片指令解决了这个问题。

    创建了一个自定义服务提供者,然后定义了我自己的刀片指令如下:

        use Illuminate\Support\Facades\Blade;
    
        class BladeServiceProvider extends ServiceProvider {
    
                public function register() {
    
                }
    
                public function boot() {
    
                    Blade::directive('existsandsetto', function ($expression) {
                        list($var, $value) = explode(',', $expression);
                        $var = trim($var);
                        $value = trim($value);
                        return "<?php if(isset($var) && $var === $value) : ?>";
                    });
    
                    Blade::directive('endexistsandsetto', function ($expression) {
                        return '<?php endif; ?>';
                    });
                }
            }
    

    在 Blade 模板中的使用:

    @existsandsetto($foo, 'bar')
      // $foo exists and is set to 'bar' 
    @endexistsandsetto
    
    • 别忘了注册自定义服务提供商。

    【讨论】:

      【解决方案2】:

      您可以将 @if 指令嵌套在 @isset directive 中。

      @isset($request['optional_columns']['reason'])
        @if ($request['optional_columns']['reason'] === 'true')
          // Do something
        @endif
      @endisset
      

      或者你可以定义一个custom blade directive:

      Blade::if('setTrue', function($var) {
        return isset($var) && $var === 'true';
      });
      
      @setTrue($request['optional_columns']['reason'])
        // Do something
      @endsetTrue
      

      【讨论】:

      • 我已经使用自定义刀片指令解决了这个问题。感谢您的帮助。
      猜你喜欢
      • 1970-01-01
      • 2013-06-04
      • 2015-02-13
      • 2016-04-02
      • 1970-01-01
      • 2017-11-14
      • 2014-04-26
      • 2020-09-25
      • 1970-01-01
      相关资源
      最近更新 更多