Php laravel叶片模板变量

Php laravel叶片模板变量,php,laravel,laravel-4,blade,Php,Laravel,Laravel 4,Blade,在使用laravel刀片模板时,管理输出中变量的认可方法是什么 例如,我正在开发一个视图,显示每个农民即将完成的家务活/任务。pivot表包含任务的due_atdatetime字段,我想根据项目是否过期、是否完成等更改项目的类别 @foreach ($farmer->tasks as $task) @if ($task->pivot->due_at) < date(now)) $style = 'alert alert-danger'; @

在使用laravel刀片模板时,管理输出中变量的认可方法是什么

例如,我正在开发一个视图,显示每个农民即将完成的家务活/任务。pivot表包含任务的
due_at
datetime字段,我想根据项目是否过期、是否完成等更改项目的类别

@foreach ($farmer->tasks as $task)
    @if ($task->pivot->due_at) < date(now))
        $style = 'alert alert-danger';
    @elseif ($task->pivot->due_at) > date(now))
        $style = 'alert alert-success';
    @else
        $style = '';
    @endif
    <div class="list-group-item {{ $style }}">{{$task->name}} <span class="glyphicon glyphicon-calendar"> {{ $task->pivot->due_at }}</span> <span class="glyphicon glyphicon-pencil"></span><span class="glyphicon glyphicon-trash"></span></div>
@endforeach 
@foreach($farmer->tasks as$task)
@如果($task->pivot->due_at)pivot->due_at)>日期(现在))
$style='alert-alert-success';
@否则
$style='';
@恩迪夫
{{$task->name}{{$task->pivot->due_at}
@endforeach
此示例引发错误:
未定义变量:style(视图:/home/vagrant/code/app/views/farmers/show.blade.php)

我看不到一种明显的方法来进行简单的代码块设置变量,就像我在“普通”PHP视图中那样,通过对
due\u at
值进行一些基本计算来定义要应用于任务项的类


是否应该将此逻辑移到辅助函数或其他什么地方?

假设
到期时间是一个时间戳

@foreach ($farmer->tasks as $task)
    @if (Carbon::parse($task->pivot->due_at) < Carbon::now())
        <?php $style = 'alert alert-danger'; ?>
    @elseif (Carbon::parse($task->pivot->due_at) > Carbon::now())
        <?php $style = 'alert alert-success'; ?>
    @else
        <?php $style = ''; ?>
    @endif
    <div class="list-group-item {{ $style }}">{{$task->name}} <span class="glyphicon glyphicon-calendar"> {{ $task->pivot->due_at }}</span> <span class="glyphicon glyphicon-pencil"></span><span class="glyphicon glyphicon-trash"></span></div>
@endforeach 
@foreach($farmer->tasks as$task)
@如果(Carbon::parse($task->pivot->due_at)pivot->due_at)>Carbon::now())
@否则
@恩迪夫
{{$task->name}{{$task->pivot->due_at}
@endforeach

@Anam您的答案有效,但我将使用以下方法

@user101289假设您有默认布局,并且它生成内容节。因此,为了声明和使用变量,我建议您在内部模板文件中使用
vars
部分,并在顶部一次性声明所有变量。然后使用它。因为我们不会产生
vars
部分,所以它不会打印它

这将帮助您跟踪所使用的变量及其标准方法,以便在顶部声明所有变量并在程序的其余部分使用:

@extends('layouts.default') /* Your default layout template file. */
@section("vars")
  {{ $yourVar = 'Your value' }}
@endsection
@section("content") /* The content section which we will print */
    // Your other HTML and FORM code and you can use variables defined in **vars** section
@endsection
@stop

它打印$style='alert-alert-danger';在HTML输出中。您不能在blade模板中声明和使用变量。在我的例子中,它打印
$style='alert danger'HTML输出中的代码。你能运行你的代码吗?@user101289请跟随:@PHPWeblineindia进行测试?我想你们不知道这是工作。尽管在模板中声明变量是不可取的。我将取消我的否决票。但是@user101289您应该只在模板中使用变量。谢谢,但我不明白当我需要声明的变量位于
foreach
块中时,这是如何工作的。我认为在控制器中也没有一种优雅的方法来处理这个问题,因为我仍然需要在控制器中执行
foreach
,然后将整个修改后的数组传递给视图。
@extends('layouts.default')
是您正在扩展的默认布局。而
@section(“content”)
中的代码将会产生。因此最好创建一个新的节
@section(“vars”)
,它不会被打印出来,并将变量声明放在该区域中。是的,有时需要在模板文件中定义变量来打印相关任务。哦,我明白你的意思了。谢谢@用户101289如果它对您有帮助,请标记为正确并向上投票!我会尽快测试它。谢谢