【问题标题】:How to pass route values to controllers in Laravel 4?如何将路由值传递给 Laravel 4 中的控制器?
【发布时间】: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 数组。

标签: laravel laravel-4


【解决方案1】:

首先,这里有一个快速提示:

代替

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

【讨论】:

  • 我不确定我是否理解如何使用路由参数来解决我的问题。我将编辑我的原始问题以添加更多细节。
  • I want to set the array and pass it into the Controller somehow - 我提供的答案正好涵盖了这一点。看看 laravel 文档。我在答案中提供了链接。参数将从路由传递到您的控制器。使用 public function getTweets($twitter_id) {...} 之类的参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
相关资源
最近更新 更多