2015-08-15 67 views
3

工作,我有以下的代码,通过用户的帐户循环并显示它们:

@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> 

当账户确实有个人资料相片网址,它显示正确。但是,如果没有配置文件图片,则不会显示默认网址。

我在做什么错?

我使用Laravel 5.1

+1

可能是这个链接将帮助您: http://stackoverflow.com/questions/5998309/逻辑运算erators-or-or –

+0

你应该如何工作 - 你确定在默认路径中没有错误吗? img试图加载的是什么src? –

+1

如果用户没有帐户,那么存储在数据库中的是什么?空值?一个空字符串?你在做什么是好的,它应该工作,除非$ account-> profile_pic_url不计算为false。 – zeratulmdq

回答

2

阅读你的问题,我敢说你对'或'刀片语法有点困惑。正如official documentation指出,“或”是一个整洁shorcut“回响数据如果它存在”,但如果不是不为空或空的(因为我认为这是你的情况)......

如,通常你会从数据库中获取模型,其中一些字段只是EMPTY('',0,false等),它并不意味着它们不存在。在这种情况下,“或”语法将只是不适合你,因为它在转换:

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

...我认为你正在寻找的东西,如:

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

.. 。或者,如果你肯定知道你正在评估的变量存在,只是(文本域):

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

您可以用这种方式:

{{ 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> 
+0

这不是一个解决方案,'或'语法只是被翻译成你的PHP代码... – andcl