laravel:将视图插入数组
Posted
技术标签:
【中文标题】laravel:将视图插入数组【英文标题】:laravel: insert views into array 【发布时间】:2014-06-13 07:46:04 【问题描述】:我想在我的主视图(显示)中显示门票(视图)的动态数量。我从数据库中获取了一组门票数据。问题是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】:如果我理解你的问题,你想为每张票呈现一个特定的视图,所有这些都嵌套在一个主视图中。
因此,在控制器中,我会将所有 tickets
数组传递给视图,例如。喜欢:
return View::make('tickets.list')->with('tickets', $tickets);
然后在视图中我会调用刀片 render each
函数,它为传递的数组中的所有对象呈现部分视图。
@each('tickets._item', $tickets, 'ticket')
正如我所读到的,它没有记录在案,但您可以在这里阅读:http://www.neontsunami.com/post/@each-in-laravel-blade
尚未检查,但应该可以。我已经在 Laravel 3 的刀片中使用了每个渲染,并且效果很好。
更新: 我已经检查过它是否有效。这就是我所做的:
-
在控制器中,我将 $tickets 传递给视图,如上所示
创建文件 .../views/tickets/list.blade.php 并插入代码:
<ul>
@each('tickets._item', $tickets, 'ticket')
</ul>
创建文件 .../views/tickets/_item.blade.php 并插入代码:
<li>
$ticket->id
</li>
就是这样,一切正常 - 对于每张票,都有一个在 _item.blade.php 文件中定义的视图。
【讨论】:
我尝试使用code
echo @each('helpers.eventBox', $oldTickets, 'ticket'); code
但我总是收到此错误。只有变量可以通过引用传递。有什么想法吗?
不要使用 php 调用它,例如:<?php echo each(...); ?>
,而只是使用刀片,所以在您的代码中只需输入 @each('tickets._item', $tickets, 'ticket')
- 记住所有文件都以扩展刀片.php 为前缀,例如。您的带有门票视图的文件应如下所示:views/tickets/_item.blade.php以上是关于laravel:将视图插入数组的主要内容,如果未能解决你的问题,请参考以下文章