1

データベースには記事の URL が与えられています (例: "article1"、"article2"、"article3")。

www.example.com/article1 と入力すると、コントローラーにルーティングしたい: index, action:index.

私のルートは次のとおりです。

//Bootstrap.php
public function _initRoute(){    
    $frontController = Zend_Controller_Front::getInstance();

    $router = $frontController->getRouter();
    $router->addRoute('index',
        new Zend_Controller_Router_Route('article1', array(
            'controller' => 'index',
            'action' => 'index'
        ))
    );
} 

しかし、別のリンク (以前は機能していた) をクリックすると、再び www.example.com/article1 が表示されます。データベース内のすべての URL に対して一般的にこのルートを実行する方法はありますか? 何かのようなもの:

    $router->addRoute('index',
        new Zend_Controller_Router_Route(':article', array(
            'controller' => 'index',
            'action' => 'index'
        ))
    );
4

1 に答える 1

1

私は通常、xml ルートまたは「新しい Zend_controller_Router_Route」の方法ではなく、ini ファイルをセットアップします。私の意見では、整理するのは少し簡単です。これが私があなたが探していることをする方法です。ルーティングを変更し、 http://domain.com/article1 のルートではなく、 http://domain.com/article/1のようなルートを使用することをお勧めします。いずれにせよ、あなたの状況で私がすることはここにあります。

routes.ini ファイル内

routes.routename.route = "route"
routes.routename.defaults.module = en
routes.routename.defaults.controller = index
routes.routename.defaults.action = route-name
routes.routename.defaults.addlparam = "whatevs"

routes.routename.route = "route2"
routes.routename.defaults.module = en
routes.routename.defaults.controller = index
routes.routename.defaults.action = route-name
routes.routename.defaults.addlparam = "whatevs2"

routes.route-with-key.route = "route/:key"
routes.route-with-key.defaults.module = en
routes.route-with-key.defaults.controller = index
routes.route-with-key.defaults.action = route-with-key

あなたのブートストラップファイルで

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

#... other init things go here ...

protected function _initRoutes() {

    $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini');
    $front = Zend_Controller_Front::getInstance();
    $router = $front->getRouter();
    $router->addConfig($config,'routes');
    $front->setRouter($router);
    return $router;

    }

}

コントローラーでこれを行うことができます

class IndexController extends Zend_Controller_Action {

    public function routeNameAction () {
        // do your code here.
        $key = $this->_getParam('addlparam');

    }

    public function routeWithKeyAction () {

        $key = $this->_getParam('key');

        // do your code here.

    }
}
于 2012-12-07T00:24:35.373 に答える