我想在PHP视图文件(Laravel / Blade)中执行以下操作:
{{ empty($candidate->current_address) ? 'N/A' : $candidate->current_address }}
但这对我来说有点长。有更好的方法吗?
顺便说一句,这不起作用:
{{ $candidate->current_address ?? 'N/A' }}
因为该变量是一个空字符串,所以它只显示空字符串(不是“ N / A”)。
我也无法创建辅助方法,因为如果$candidate->current_address
未定义,则会导致通知错误。
谢谢。
答案 0 :(得分:2)
如何?
{{ $candidate->current_address ?? null ?: 'N/A' }}
简而言之,您可以编写一个函数:
function display_optional($value)
{
return $value ?: 'N/A'
}
用法:
{{ display_optional($candidate->current_address ?? null) }}
答案 1 :(得分:0)
在候选模型中,您可以添加:
function getCurrentAddressAttribute()
{
return $this->attributes['current_address'] ?: 'N/A';
}
然后只需在刀片中执行以下操作:
{{ $candidate->current_address }}
此处有更多信息:https://laravel.com/docs/6.x/eloquent-mutators#accessors-and-mutators
我看到您必须将其应用于许多值,所以另一个选择是:
{{ $candidate->current_address ?: 'N/A' }}
您还可以像这样创建一个辅助函数:
function showIfAvailable($somevalue)
{
return $somevalue ?: 'N/A';
}
然后在刀片中使用它:
{{ showIfAvailable($candidate->current_address) }}
请注意,添加自己的帮助器功能需要您制作一个文件(例如App \ helperFunctions.php),然后将其添加到composer.json:
"autoload": {
"files": [
"app/helperFunctions.php"
]
}
然后运行:
composer dump-autoload
完成这些操作后,您应该可以访问Blade中的功能。
答案 2 :(得分:0)
您可以创建一个帮助文件并创建一个自定义函数,然后可以执行以下操作:
{{ blank_formatted($candidate->current_address) }}
{{ blank_formatted(optional($candidate->current_address)->firstname) }}
// if current_address does not exist
创建新的帮助文件app/Http/helpers.php
定义您的功能:
<?php
if (! function_exists('blank_formatted')) {
/**
* @param null $value
*
* @return string
*/
function blank_formatted($value = null)
{
return blank($value) ? 'N/A' : $value;
}
}
将其添加到您的composer.json:
"autoload": {
"files": [
"app/Http/helpers.php"
],
},
运行composer dump-autoload