簡體   English   中英

如何在symfony路由中自動化函數名稱?

[英]How to automate function name in symfony routing?

以下是自定義捆綁包中定義的簡單路由

my_admin_route:
    pattern:  /admin/{name}
    defaults: { _controller: NamespaceCustomBundle:CustomControl:login }

上面的路由代碼將調用CustomControlController的方法loginAction()我的問題是我如何自動化路由中的函數名稱,就像每個函數一樣,我沒有再次定義路由應該有一個路由並自動調用函數在路由中定義參數{name} ,如下所示

my_admin_route:
    pattern:  /admin/{name}
    defaults: { _controller: NamespaceCustomBundle:CustomControl:{name} }

你可以看看KNP Rad Bundle: http//rad.knplabs.com/

它做了許多好事,包括你正在談論的那個

您可能想要創建自定義路由加載器, 請參閱

據我所知,目前沒有開箱即用的解決方案直接映射控制器 - >方法 - >參數到特定路由controller/method/param1/param2像其他框架一樣(CodeIgniter,FuelPHP ...... )。

事實上,這可以通過自定義路由加載器來實現,正如@Onema所說。

我可以想到另外兩個選項,其中沒有一個選項完全符合您的要求,但可能會引起關注:

1. Creating a controller action which would just forward request to other actions
2. Using @Route annotation

1。

在AdminController中創建操作:

public function adminAction($actionName)
{
    return $this->forward('MyBundle:TargetController:' . $actionName);
}

2。

注釋路由,因為它允許您定義路由而不命名它們。 名稱將按約定隱式創建: 注釋路由

如果您不想制作自定義路由加載器,那么它不會完全符合您的要求,但也非常優雅:

/**
 * @Route("/admin/dosmt")
 */
public function dosmtAction()
{
    return new Response('smtAction');
}

此外,您可以將所有控制器操作掛載到前綴,就像使用YAML路由一樣:

/**
 * @Route("/admin")
 */
class MyController extends Controller
{
    /**
     * @Route("/dosmt")
     */
    public function dosmtAction()
    {
        return new Response('smtAction');
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM