【发布时间】:2013-08-10 22:01:39
【问题描述】:
我正在努力理解一些我相信你们中的一个人将能够轻松解释的东西。我对 MVC 有点陌生,所以请多多包涵。
我创建了一个控制器来处理与连接到 Twitter API 和将返回的 JSON 处理为 HTML 相关的所有工作。
Route::get('/about', 'TwitterController@getTweets');
然后我使用:
return View::make('templates.about', array('twitter_html' => $twitter_html ))
在我的控制器中将生成的 HTML 传递给我的视图,一切正常。
我的问题是我有多个页面,用于在每个页面上显示不同的 Twitter 用户的推文。我想做的是向我的控制器传递一个值数组(推特句柄),然后它将在 API 调用中使用。我不想做的是为每个用户组设置不同的控制器。如果我在控制器中设置$twitter_user_ids,我可以使用该数组来提取推文,但我想设置数组并以某种方式将其传递给控制器。我认为会有类似的东西
Route::get('/about', 'TwitterController@getTweets('twitter_id')');
但最后一个不起作用。
我相信我的问题与变量范围有关,但我可能会走得很远。
我是不是走错了路?如何向我的控制器传递不同的数据集以产生不同的结果?
编辑 - 更多信息
Markus 建议使用路由参数,但我不确定这是否适用于我的目标。这是我的具体用例。
我有一个 about 页面,它可以从 Twitters API 中提取我的推文并将它们显示在页面上。 我还有一个“推文”页面,可以从多个开发者帐户中提取最新的推文并显示出来。
在这两种情况下,我都有 $twitter_user_ids = array() 在数组中具有不同的值。
我构建的控制器获取该用户名数组并访问 API 并生成传递给我的视图的 HTML。
因为我正在处理一个数组(其中第二个是一个大数组),所以我认为路由参数不会起作用。
再次感谢您的帮助。没有你们,我无法做到!
【问题讨论】:
-
感谢您为学习 Laravel 4 所做的努力!
-
您可以将数组传递给路由参数。试试看它是否有效。这听起来也有点像 Route Model Binding。看看:laravel.com/docs/routing#route-model-binding
-
嘿马库斯,我现在正在解决这个问题。感谢您的帮助。
-
嗨,Markus,恐怕我还没关注。 1:使用 URI 真的是向控制器传递参数的唯一方法吗?我不想为了避免代码重复而不得不更改我的目录结构。 2:如何通过路由参数传递数组?如何在 URI 中放置一个数组?我在这里很迷失......
-
看起来你的设计概念有点混乱。给我看一些你构建的控制器的代码,它处理你在编辑中提到的 twitter 数组。