将ControllerAccess从Controller传递到Laravel 4中的View

时间:2013-05-11 19:36:32

标签: laravel laravel-4

我尝试学习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”)。我能做什么?我可以以该数组格式发布数据(我从我可以使用的文档中假设)。

1 个答案:

答案 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-> ...等。

此致 维拉德