【问题标题】:Pass Controller and action in url在 url 中传递控制器和操作
【发布时间】:2017-01-27 16:30:49
【问题描述】:

有没有办法生成包含控制器和动作的url?

我需要这样的网址:

/admin/{controller}/{action}/{some other things}

所以当我调用 url:/admin/pages/add 我会调用:AdminBundle:Pages:add 所以我不需要在我的管理面板中为所有控制器和操作组合添加routing.yml 条目,例如:

/admin/page/add
/admin/page/edit/1
/admin/user/add
etc.

我知道,当我添加类似这样的路由时:

admin_default:
    path:     /{_controller}
    defaults: { _controller: AdminBundle:Page:index }

/admin/AdminBundle:Page:add 之类的网址可以使用,但这不是我所期望的。

【问题讨论】:

  • 要正确执行此操作,您可能必须覆盖 ControllerResolver。有一些例子。节省一些复制/粘贴/编辑的工作量很大。您已经需要创建控制器和方法。真的值得花时间为系统添加更多魔法吗?

标签: php routing symfony


【解决方案1】:

您可以在EsayAdminBudle 中找到此功能的示例:

$action = $request->query->get('action', 'list');

但代码可能很复杂,因为有很多抽象。

【讨论】:

  • 不清楚(对我而言)您发布的代码将如何实际启动控制器/动作。
【解决方案2】:

试试这个,@Route 并将其关联到一个 Action

 /**
 * @Route("/home/list/parameter", name="home-list-parameter")
 * @Method({"POST"})
 */
  public function getParametersAction() {
  ...

http://symfony.com/doc/3.1/routing.html

【讨论】:

  • 这如何解决这个问题?
猜你喜欢
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
相关资源
最近更新 更多