我正在努力理解一些事情,我相信你们中的一个人能够轻松地解释这一点。我对 MVC 有点陌生,所以请耐心等待。
我创建了一个 Controller ,用于处理连接到 Twitter API 并将返回的 JSON 处理为 HTML 所涉及的所有工作。
Route::get('/about', 'TwitterController@getTweets');
然后我使用:
return View::make('templates.about', array('twitter_html' => $twitter_html ))
在我的 Controller 中将生成的 HTML 传递到我的 View ,一切正常。
我的问题是,我有多个页面,用于在每个页面上显示不同 Twitter 用户的推文。我想要做的是将一个值数组(twitter 句柄)传递给我的 Controller ,然后它将在 API 调用中使用。我不想做的是为每个用户组使用不同的 Controller 。如果我在 Controller 中设置 $twitter_user_ids ,我可以使用该数组来提取推文,但我想设置该数组并以某种方式将其传递到 Controller 中。我想会有类似的东西
Route::get('/about', 'TwitterController@getTweets('twitter_id')');
但是最后一个不起作用。
我相信我的问题在某种程度上与变量作用域有关,但我可能偏离了。
我是不是走错了路?如何向我的 Controller 传递不同的数据集以产生不同的结果?
编辑 - 更多信息
马库斯建议使用路线参数,但我不确定这是否适合我的目的。这是我的具体用例。
我有一个“关于”页面,它将从 Twitter API 中提取我的推文并将其显示在页面上。 我还有一个“推文”页面,可以从多个开发者帐户中提取最新的推文并显示它们。
在这两种情况下,我的 $twitter_user_ids = array() 数组中都有不同的值。
我构建的 Controller 采用该用户名数组并访问 API 并生成传递到我的 View 的 HTML。
因为我正在使用一个数组(其中第二个是一个大数组),所以我认为路由参数不起作用。
再次感谢您的帮助。没有你们,我不可能做到这一点!
最佳答案
首先,这是一个快速提示:
而不是
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
关于laravel - 如何在 Laravel 4 中将路由值传递给 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18166751/