2012-07-27 25 views
1

隨着Zend Framework 2的穩定版本的陸續推出,我們一直在慢慢地實現一些ZF2組件,改變約定,實現命名空間等。我們很高興擁有所有的控制器在移動之前命名空間,只是爲了簡單的事情,但我還沒有找到一個好方法來實現這一目標。準備Zend Framework 2(命名空間控制器)

有沒有人對ZF1中的控制器命名空間有任何建議?我不介意在這一點上編輯ZF1庫文件。

namespace Product; 

use Zend_Controller_Action as AbstractActionController; 

class IndexController extends AbstractActionController 
{} 
+0

不ZF1自動加載器支持自動加載名稱空間文件?如果是這樣,那麼只需將您的控制器轉換爲名稱空間名稱,一切都應該仍然有效。我不確定是否自動加載名稱空間類。 – 2012-07-27 23:02:20

+0

爲了記錄,ZF2控制器的正確名稱空間應該是'Module \ Controllers' – Sam 2012-07-30 05:19:13

+0

ZF2骨架應用程序使用Application \ Controller \ IndexController([模塊名稱] /控制器/ [控制器名稱]控制器)。 – 2012-07-30 21:18:58

回答

0

了一段時間,但我發現,這是可以用自定義調度來完成:

<?php 

namespace Webjawns\Controller\Dispatcher; 

use Zend_Controller_Dispatcher_Standard as Dispatcher; 

class Standard extends Dispatcher 
{ 
    /** 
    * Format action class name 
    * 
    * @param string $moduleName Name of the current module 
    * @param string $className Name of the action class 
    * @return string Formatted class name 
    */ 
    public function formatClassName($moduleName, $className) 
    { 
     return $this->formatModuleName($moduleName) . '\Controller\\' . $className; 
    } 

    /** 
    * Convert a class name to a filename 
    * 
    * @param string $class 
    * @return string 
    */ 
    public function classToFilename($class) 
    { 
     return str_replace('\\', DIRECTORY_SEPARATOR, $class) . '.php'; 
    } 
} 

某處的入口點然後到應用程序:

Zend_Controller_Front::getInstance()->setDispatcher(
    new \Webjawns\Controller\Dispatcher\Standard());