laravel:将视图插入数组

时间:2014-06-13 07:46:05

标签: php view laravel-4

我希望在主视图(show)中显示动态数量的故障单(视图)。我从数据库中获取了一系列故障单数据。问题是laravel不允许我从视图中回显视图(可能有可能吗?有人知道怎么做)所以我在控制器中创建了一系列故障单视图并将它们传递给我的主视图(显示) 。在主视图中,我使用foreach来遍历所有视图并显示它们。由于某种原因laravel抛出错误Method Illuminate\View\View::__toString() must not throw an exception。这意味着我的观点有问题。我做错了什么?

我的控制器代码:

foreach( $tickets as $ticket ){

$oldTickets[] = View::make('helpers.eventBox', array( 'ticket' => $ticket ));
}

    $layout = View::make('layouts.main');
    $layout->nest('content','profile.show.show',array(

        'oldTickets' => $oldTickets,                
    ));

    return $layout;

显示视图:

foreach( $oldTickets as $ticket ){ 

        echo $ticket;                                               
 }

当我将单个视图从控制器传递到视图时,它可以工作。我的问题是什么?它的最佳解决方案是什么?

感谢。

编辑: 我认为我有错误。通常可以从视图页面渲染。我解决了我的问题。

刀片解决方案看起来也是正确的方式,我尝试但没有成功,如果我会在你的答案附近看到5'上升点',我会将其标记为其他用户会遇到同样问题的正确问题。

抱歉,感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,你想要为每个故障单呈现一个特定的视图,以及所有嵌套在主视图中的视图。

因此,在控制器中,我会将所有tickets数组传递给视图,例如。像:

return View::make('tickets.list')->with('tickets', $tickets);

然后在视图中我将调用blade render each函数,该函数为传递的数组中的所有对象呈现部分视图。

@each('tickets._item', $tickets, 'ticket')

正如我所读到的,它没有记录,但在这里你可以阅读它:http://www.neontsunami.com/post/@each-in-laravel-blade

没有检查过,但它应该有效。我在Laravel 3中使用了每个刀片渲染,它运行良好。

<强>更新 我检查过它有效。这就是我所做的:

  1. 在控制器中,我将$ ticket传递给视图,如上所述
  2. 创建文件... / views / tickets / list.blade.php并插入代码:

    <ul> @each('tickets._item', $tickets, 'ticket') </ul>

  3. 创建文件... / views / tickets / _item.blade.php并插入代码:

    <li> {{ $ticket->id }} </li>

  4. 就是这样,一切正常 - 每张票都是在_item.blade.php文件中定义的视图。