如果PHP中的变量未定义,为空或为空,则显示“ N / A”

时间:2019-10-29 09:39:50

标签: php laravel laravel-blade

我想在PHP视图文件(Laravel / Blade)中执行以下操作:

{{ empty($candidate->current_address) ? 'N/A' : $candidate->current_address }}

但这对我来说有点长。有更好的方法吗?

顺便说一句,这不起作用:

{{ $candidate->current_address ?? 'N/A' }}

因为该变量是一个空字符串,所以它只显示空字符串(不是“ N / A”)。 我也无法创建辅助方法,因为如果$candidate->current_address未定义,则会导致通知错误。

谢谢。

3 个答案:

答案 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中的功能。

查看:https://laravel-news.com/creating-helpers了解更多信息

答案 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