我尝试学习Laravel 4并且我找到了它 - 到目前为止 - 非常棒。但是Blade的模板对我来说似乎很不合适,比Smarty更不直观。
我有一个小问题。我尝试将我的数据从Controller推送到View。我这样做:
public function getGame($id, $slug = null) {
$game['info'] = Game::find($id);
$game['genres'] = Game::find($id)->genres()->get();
$game['dev'] = Game::find($id)->developers()->get();
$this->layout = View::make('user')->with('game',$game);
}
非常简单,不是吗?目前,我的视图只是{{ $game['info']->title }}
。但似乎它没有看到我的变量(抛出“Undefined variable:game”)。我能做什么?我可以以该数组格式发布数据(我从我可以使用的文档中假设)。
答案 0 :(得分:1)
我认为问题出在代码的最后一行。您要么返回像
这样的视图return View::make('user')->with('game', $game);
或做这样的事情:
在控制器中创建受保护的$ layout ='my_layout.blade.php'并创建文件my_layout.blade.php并将其放入views文件夹中。在里面写点像
@yield('content')
然后,创建你的user.blade.php并创建一个这样的部分
@section('content')
....
@stop
最后,在你的getGame函数结束时
$this->layout->content = View::make('user')->with('game', $game);
这对你来说很有意义。
顺便说一下,为什么不在游戏模型中定义'流派'和'开发者'关系,然后使用像
这样的热切加载$game = Game::with('genres', 'developers')->find( $id );
并将其传递给视图。然后访问标题,如$ game->标题,类型如$ game-> genres-> ...等。
此致 维拉德