0

誰かが次のように書いたときの zend ルーターはどうあるべきか

http://domain.com/admin/news/edit/id/6

そして最後に、次のようにルーティングされました

http://domain.com/news/admin/edit/id/6

これを行うためにコントローラープラグインを使用できますか???

私を助けてください ...

4

1 に答える 1

1

私は誰からも助けを得られませんでした。しかし、ついに私はこれを解決するためのコントローラープラグインを作成することができました。誰かに役立つかもしれないので、私はこれを投稿しています...

class Layzend_Controller_Plugin_AdminRouter extends Zend_Controller_Plugin_Abstract
{
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {
        $module = $request->getModuleName(); 
        $controller = $request->getControllerName(); 
        $action = $request->getActionName();

        $bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
        $options = $bootstrap->getOption('custom');
        $adminDirectory = $options['adminDirectory'];
        $adminDirectory = $adminDirectory ? $adminDirectory : 'admin';

        if($module == $adminDirectory)
        {
            $newModule = ($controller == 'index') ? 'default' : $controller;
            $newController = 'admin';
            $newAction = $action;

            $moduleDir = APPLICATION_PATH . "/modules/$newModule";
            if(!is_dir($moduleDir)) 
            {
                Zend_Layout::getMvcInstance()->setLayoutPath(APPLICATION_PATH . "/layouts/scripts/admin/");
                throw new Zend_Controller_Action_Exception('Page not found.',404);
            }

            $request->setModuleName($newModule);
            $request->setControllerName($newController);
            $request->setActionName($newAction);

        } 
        else if($module == 'admin') {
            throw new Zend_Controller_Action_Exception('Page not found.',404);
        }
    }
}
于 2011-09-18T20:12:24.847 に答える