所有foreach传递后我如何写别的东西

时间:2017-10-25 02:36:22

标签: php laravel

$assignments有很多作业,每个作业都有截止日期。如果超过截止日期,我已为每项作业打印 assigmnet截止日期。但是,如果没有人到达截止日期,我想打印否通知

  @foreach($assignments as $assignment)
       @if($assignment->deadline<$now)
        <div class="alert alert-danger alert-dismissible" role="alert">
              <li> Assignment deadline reached for {{$assignment->assignment}}</li>
        </div>                    
       @endif       
   @endforeach

我怎样才能实现这个目标?

5 个答案:

答案 0 :(得分:2)

试试这个。在变量中使用True和False。

@php  $deadline = false @endphp
@foreach($assignments as $assignment)
       @if($assignment->deadline<$now)
        @php  $deadline = true @endphp
        <div class="alert alert-danger alert-dismissible" role="alert">
              <li> Assignment deadline reached for {{$assignment->assignment}}</li>
        </div>                    
       @endif     
   @endforeach
       @if($deadline = false)
        <p>
        No Notifications
        </p>                    
       @endif   

答案 1 :(得分:1)

为每个人添加一个计数器以计算在截止日期内的任何作业

<?php
$within_deadline = 0;
@foreach($assignments as $assignment)
   @if($assignment->deadline<$now)
    $within_deadline++;
    <div class="alert alert-danger alert-dismissible" role="alert">
          <li> Assignment deadline reached for {{$assignment->assignment}}</li>
    </div>            
   @endif       
@endforeach

// Display message if no within deadling
@if($within_deadline === 0)
  <div>No Notifications</div>
@endif

答案 2 :(得分:1)

我不相信你可以在Blade模板中做你想要的。您需要能够设置一个在达到截止日期时更改的变量,但不鼓励在视图中执行此操作,因此没有刀片标记。

您必须将此逻辑放在PHP代码中,然后将变量发送到视图,例如“no_notifications”。

我建议将@if($assignment->deadline<$now)放入PHP代码中,然后向视图发送一个已达到截止日期的分配数组。如果数组为空,则返回通知“无通知”

所需的输出

答案 3 :(得分:1)

当你提供足够的数据来工作时,事情往往在MVC编程中效果最好。我建议只提供那些超出截止日期的作业的页面,如果这是您计划展示的全部内容。

要执行此操作,请在您的控制器中删除所有过期的分配,将它们与当前日期/时间进行比较(我无法看到您的控制器,因此我无法为您提供更多) 。仅将那些过期的视图传递给视图,然后使用此刀片代码:

@if( isset($assignments[0]) )
    @foreach($assignments as $assignment)
        <div class="alert alert-danger alert-dismissible" role="alert">
            <li> Assignment deadline reached for {{$assignment->assignment}}</li>
        </div>                         
    @endforeach
@else
    // display 'No notifications'
@endif

我希望这有帮助!

答案 4 :(得分:0)

另一个想法是实际确保您只选择< $now的记录。我不确定你的控制器看起来如何,但你可以使用->where('time_field', '>=', Carbon::now())实现这一点(显然可以用你的字段替换time_field)。

只有你想要显示的记录后,你可以这样做:

@if(!$assignments->count())
    <div><p>No Notifications</p></div>
@else
    @foreach($assignments as $assignment)
        <div class="alert alert-danger alert-dismissible" role="alert">
            <li> Assignment deadline reached for {{$assignment->assignment}}</li>
        </div>                         
    @endforeach
@endif

请记住,在构建应用程序时,数据库是您的朋友。将繁重的工作留在数据库上,这将使您的代码更容易编写/维护。