我想知道如果未设置给定值,显示默认值的最佳方法是什么。我在刀片文件中有以下内容(我无法保证密钥已设置,这取决于多种因素)。
{{ $foo['bar'] }}
我想知道以下是否是最好的方法,
{{ (isset($foo['bar']) ? $foo['bar'] : 'baz' }}
或者有更好的方法吗?
谢谢 :)
使用php的null coalesce运算符:
{{ $variable ?? "Default Message" }}
从Laravel 5.7开始删除
使用Laravel 4.1-5.6,您可以这样做:
{{ $variable or "Default Message" }}
它与以下相同:
echo isset($variable) ? $Variable : 'Default Message';
PHP 5.3的三元快捷语法适用于Blade模板:
{{ $foo->bar ?: 'baz' }}
它不适用于未定义的顶级变量,但它非常适合处理数组和对象中的缺失值。
由于Laravel 5.7 {{$Variable or "Default Message"}}
投掷$Variable is not defined
。这个{{$Variable ?? "Default Message"}}
虽然有效。
我建议您在控制器中设置默认值,而不是在视图中进行解决。
这是最好的方法,因为它使逻辑远离您的视图,并保持视图的标记清洁。
例如,在控制器中,在将数据传递给视图之前:
if(!isset($foo['bar'])){
$foo['bar'] = 'baz';
}
虽然克里斯B的答案是完全有效的;我觉得这也许是一个可以有另一种答案的问题。有些人宁愿不让他们的控制器“胖”,至少在这种情况下,使用Presenter可能是你寻求的答案,允许你的应用程序视图具有很大的灵活性。
在Github上查看以下project/package。自述文件非常强大,有很多例子可以帮助你。
它可以让你做你所要求的,只需要打电话
{{ $foo['bar'] }}
在你看来。