2

Zend フレームワークは初めてで、フレームワーク 2.0 を使用しています。PHP Zend フレームワークでのルーティングについて明確にする必要があります。1) ルーティングにおける Bootstrap.php の役割は何ですか。2) ルーティングのために index.php を使用する方法。3) カスタム ルーティングを実現するためにどのコードを記述する必要があるか。

また、特定のコードを作成しましたが、目的の出力が得られません。

Bootstrap.php:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{   
    protected function _initRouter()
    {
    $frontController = Zend_Controller_Front::getInstance();
        $router = $frontController->getRouter();
        $route = new Zend_Controller_Router_Route(':userid',
                                            array('controller' => 'user',              'action'=>     'index', 'userid'=>null));
        $router->addRoute('default', $route);   
    }   
}

index.php

 error_reporting(E_ALL);
 ini_set('display_errors', 1);

 ini_set('display_errors', true);

 //Define Base Url
 define("BASEURL","http://".$_SERVER['SERVER_NAME']."/sampleapp/public/");

 // directory setup and class loading
 set_include_path('.' . PATH_SEPARATOR . 'library/'
     . PATH_SEPARATOR . 'application/models'
     . PATH_SEPARATOR . 'application/config'
     . PATH_SEPARATOR . get_include_path()
 );

 include ('Zend/Loader/Autoloader.php');
 $loader = Zend_Loader_Autoloader::getInstance();

 // setup controller
 $frontController = Zend_Controller_Front::getInstance();
 $frontController->throwExceptions(true);
 $frontController->setControllerDirectory('application/controllers');

 // run!
 $frontController->dispatch();

私のURLのように、ルート値を取得しようとしています:

localhost:8080/sampleapp/user/index/1.

ルートから 1 を取得するにはどうすればよいですか。ここで 1 はユーザー ID です。

4

1 に答える 1

2

次のことをお勧めします。

  • index.php では、何も触れないでください。プロジェクトを作成するときは、Zend のデフォルトのままにしておきます。

  • projectHomeDirectory /application/Bootstrap.php に以下を含めます:

    protected function _initRoutes()
    {
            $router = Zend_Controller_Front::getInstance()->getRouter();
            include APPLICATION_PATH . "/configs/routes.php";
    }
    
  • projectHomeDirectory /application/configs/の下に routes.php ファイルを作成し、そこに必要なすべてのルートを追加します。次に例を示します。

    $router->addRoute('sample-module/user', new Zend_Controller_Router_Route(
            'user/:action/:id/',
            array('module' => 'sample', 'controller' => 'user', 'id'=>'\w+')
    ));
    

もちろん、UserController、User モデル、サンプル モジュール、およびビューを作成する必要があります。

これらはいくつかの便利なリンクです:

Zend ルーティング、スロー リソースが見つからない

http://framework.zend.com/manual/1.12/en/zend.controller.router.html#zend.controller.router.routes.standard

于 2013-01-17T18:23:43.033 に答える