我正在努力理解一些事情,我相信你们中的一个人能够轻松解释。我对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不会起作用。
再次感谢您的帮助。没有你们,我无法做到!
答案 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