如何将路由值传递给Laravel 4中的控制器?

时间:2013-08-10 22:01:40

标签: laravel laravel-4

我正在努力理解一些事情,我相信你们中的一个人能够轻松解释。我对MVC有些新意,所以请耐心等待。

我创建了一个控制器来处理连接到Twitter API和将返回的JSON处理成HTML所涉及的所有工作。

Route::get('/about', 'TwitterController@getTweets');

然后我使用:

return View::make('templates.about', array('twitter_html' => $twitter_html ))

在我的控制器中将生成的HTML传递给我的视图,一切正常。

我的问题是我有多个页面用于在每个页面上显示不同的Twitter用户的推文。我想要做的是向我的控制器传递一组值(推特句柄),然后在API调用中使用它们。我不想要做的是为每个用户组设置不同的Controller。如果我在我的控制器中设置$twitter_user_ids我可以使用该数组来提取推文,但我想设置数组并以某种方式将其传递给控制器​​。我认为会有像

这样的东西
Route::get('/about', 'TwitterController@getTweets('twitter_id')');

但最后一次不起作用。

我认为我的问题在某种程度上与变量范围有关,但我可能会离开。

我在这里走错了轨道吗?如何向控制器传递不同的数据集以产生不同的结果?

编辑 - 更多信息

马库斯建议使用路线参数,但我不确定这是否符合我的要求。这是我的具体用例。

我有一个关于页面,它会从Twitters API中提取我的推文并在页面上显示它们。 我还有一个“推文”页面,它将从几个开发者帐户中提取最新的推文并显示它们。

在这两种情况下,我都有$ twitter_user_ids = array(),数组中的值不同。

我构建的控制器获取该用户名数组并访问API并生成传递给我视图的HTML。

因为我正在处理一个数组(第二个数组是一个大数组),所以我认为Route Parameters不会起作用。

再次感谢您的帮助。没有你们,我无法做到!

1 个答案:

答案 0 :(得分:2)

首先,这是一个快速提示:

而不是

return View::make('templates.about', array('twitter_html' => $twitter_html ))

...使用

return View::make('templates.about', compact('twitter_html'))

这会自动为您创建$ twitter_html。请在PHP Manual中查看。

现在问题:

你做错了路线部分。尝试:

Route::get('/about/{twitter_id}', 'TwitterController@getTweets');

这会将twitter_id参数传递给你的getTweets函数。

查看Laravel文档:http://laravel.com/docs/routing#route-parameters