Laravel刀片提供了许多指令,但是它有没有捷径可用来检查变量是否存在并将其设置为特定值?
现在我正在做这样的事情:-
@if(isset($request['optional_columns']['reason']) && ($request['optional_columns']['reason'] === "true")
// Do something ...
@endif
模板现在看起来真的很乱,我想使用看起来整洁干净的东西。
答案 0 :(得分:1)
您可以将antonyms
指令嵌套在@isset
directive中。
@if
或者您可以定义custom blade directive:
@isset($request['optional_columns']['reason'])
@if ($request['optional_columns']['reason'] === 'true')
// Do something
@endif
@endisset
Blade::if('setTrue', function($var) {
return isset($var) && $var === 'true';
});
答案 1 :(得分:1)
回答我自己的问题: 我通过创建一个自定义的Blade指令解决了这个问题。
创建了一个自定义服务提供者,然后定义了我自己的Blade指令,如下所示:
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