2012-09-20 69 views
6

在哪個文件做我們需要以模塊中添加一個新的控制器,並把它通過URL的變化。Zend框架2添加新的控制器

有沒有一種方法可以在其中添加一個新的控制器文件並通過url調用它,而無需更改任何其他配置文件。

因爲每次在控制器文件中添加或編輯時對配置文件進行更改將非常繁瑣。

回答

4

要創建一個新的控制器,你必須至少

  • 創建控制器類
  • 確保你有一個滿足你的目的(你可以把現有的一個匹配的路由,以及創建一個新的特殊用途)
  • 創建一個controllers.invokables條目在您的模塊的module.config.php

這三個簡單的步驟是沒有辦法的。我不明白爲什麼當你添加一個控制器,它應該適應module.config.php一個問題 - 這就是配置文件是。包括打開,節省和關閉,這大約需要。 10-15秒。你不打算創建數百個控制器,是嗎?

+6

ZF1 wasnt newbei準備,ZF2更加困難:))) – SMka

+0

我不會說。我沒有使用ZF1,但是ZF2有很多很好的方面,ZF1沒有(根據其他人的意見)。 –

+0

五年來與zf1合作。 ZF2 - 一個非常,非常好的:) – SMka

9

我增加了一點澄清什麼丹尼爾上說:「要確保你有一個滿足你的目的匹配的路線......」。對於我的目的,我試圖適應路由模塊/應用/ src目錄/應用/控制器/ IndexController.php和模塊/應用/ src目錄/應用/控制器/ ProfileController.php,但是我在努力解決任何問題我ProfileController可。 ZF2是否可以在一個模塊中容納多個控制器也不清楚。我當然認爲它必須和它確實!鑑於上述兩個控制器,這是我在模塊/ Application/config/module.config.php中製作我的'路由器'數組的方式。

'router' => array(
    'routes' => array(
     'home' => array(
      'type' => 'Zend\Mvc\Router\Http\Literal', 
      'options' => array(
       'route' => '/', 
       'defaults' => array(
        'controller' => 'Application\Controller\Index', 
        'action'  => 'index', 
       ), 
      ), 
     ), 
     'application' => array(
      'type' => 'Literal', 
      'options' => array(
       'route' => '/application', 
       'defaults' => array(
        '__NAMESPACE__' => 'Application\Controller', 
        'controller' => 'Index', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'default' => array(
        'type' => 'Segment', 
        'options' => array(
         'route' => '/[:controller[/:action]]', 
         'constraints' => array(
          'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
         ), 
        ), 
       ), 
      ), 
     ), 

     'profile' => array(
      'type' => 'literal', 
      'options' => array(
       'route' => '/profile', 
       'defaults' => array(
        '__NAMESPACE__' => 'Application\Controller', 
        'controller' => 'Profile', 
        'action'  => 'index', 
       ), 
      ), 
     ), 
    ), 
), 

此外,這是我的'控制器'invokables看起來像modules.config.php成功後。

'controllers' => array(
    'invokables' => array(
     'Application\Controller\Index' => 'Application\Controller\IndexController', 
     'Application\Controller\Profile' => 'Application\Controller\ProfileController' 
    ), 
), 
+4

的Zend 2是真的不是那麼可行的......我不應該去通過這樣的籃球添加控制器。只是我的觀點。 – aserwin

+0

@ user1815615,完美的解釋:) +1 – SagarPPanchal

-1

從Zend框架2參考

我們告知,我們期望有在 應用程序控制器應用程序。這是爲了防止有人請求 的ServiceManager知道,企圖破壞應用程序的任何服務。 調度程序使用一個特殊的作用域容器,它只會將 控制器專門註冊到它,或者作爲 可調用類或通過工廠。

源: http://framework.zend.com/manual/2.0/en/modules/zend.mvc.quick-start.html#create-a-route

添加控制器是不相關的路由,除了切向 由於希望能夠指定在 URL控制器的開發。這是一個安全問題,因爲我們將控制器 視爲服務。

這是要明確什麼控制器 可用,以及(b)是默認安全的努力(一)。

正如賽義德·馬修·威爾O'Phinney。