Laravel Blade{{$变量或'默认文本'}}不能处理url


Laravel Blade {{ $variable or 'Default Text' }} not working with URLs

我有下面的代码循环遍历用户的帐户并显示它们:

@foreach ($accounts as $account)
<tr>
    <td class="user-image hidden-xs hidden-sm">
        <a href="#">
             <img src="{{ $account->profile_pic_url or '/profiles/anonymousUser.jpg' }}" class="img-circle" alt="user-pic" width="48px">
        </a>
    </td>
<tr>

当帐户确实有个人资料图片URL时,它会正确显示。但是当没有个人资料图片时,默认URL不会显示。

我做错了什么?

我使用的是Laravel 5.1

阅读你的问题,我敢说你对'or'刀片语法有点困惑。正如官方文档中所述,'or'是"如果存在"的简洁快捷方式,但如果它不是null或空(我认为这是您的情况)则不会…

。通常,您将从数据库中获取模型,其中一些字段只是EMPTY (", 0, false,等等),这并不意味着它们不存在。在这种情况下,'or'语法将不适合您,因为它翻译为:

{{ isset($name) ? $name : 'Default' }}

…我想你是在找这样的东西:

{{ (isset($name) && $name != '') ? $name : 'Default' }}

…或者,如果您确实知道要计算的变量存在,只需(对于文本字段):

{{ ($name != '') ? $name : 'Default' }}

你可以用这种方式:

{{ isset($account->profile_pic_url) ? $account->profile_pic_url : '/profiles/anonymousUser.jpg' }}

代码:

@foreach ($accounts as $account)
<tr>
    <td class="user-image hidden-xs hidden-sm">
        <a href="#">
             <img src="{{ isset($account->profile_pic_url) ? $account->profile_pic_url : '/profiles/anonymousUser.jpg' }}" class="img-circle" alt="user-pic" width="48px">
        </a>
    </td>
<tr>