1

我尝试学习 Laravel 4,我发现它 - 到目前为止 - 非常棒。但是刀片模板对我来说似乎很难,例如不如 Smarty 直观。

我有一个小问题。我尝试将数据从控制器推送到视图。我这样做:

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 }}. 但它似乎没有看到我的变量(抛出“未定义的变量:游戏”)。我能做些什么?我可以以该数组格式发布数据吗(我从文档中假设我可以)。

4

1 回答 1

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->title 这样的标题,像 $game->genres->... 这样的流派。

问候, 弗拉德

于 2013-05-11T20:24:36.777 回答