4

私は zend フレームワークにかなり慣れていません。Zend_Rest_Controller を使用して RESTful コントローラーを作成しようとしています。優れたチュートリアル http://www.techchorus.net/create-restful-applications-using-zend-frameworkから作成しました 。完全に機能します。そこで、既存の zend アプリケーションに追加しました。1 つのコントローラーを RESTful にしたかったので、ブートストラップで必要な変更を行いました。

protected function _initRestRoute()
{
    $this->bootstrap('frontController');
    $frontController = Zend_Controller_Front::getInstance();
    $restRoute = new Zend_Rest_Route($frontController, array() , array('default' =>                   array('MyserviceController')));
    $frontController->getRouter()->addRoute('rest', $restRoute);
}

MyserviceControllerから index メソッドを呼び出すことになっている URL http://localhost/projectname/public/index.php/myserviceを使用してサービスにアクセスしようとすると、サーバーは 500 内部サーバー エラーをスローします。アプリケーションのフォルダ構造は次のとおりです。

application/
    configs/
        application.ini
    controllers/
        IndexContoller
        OneController
        TwoController
        Myservice
    forms
    layouts
    models
    modules/
        app1module
        app2module
        app3module
     views
    Bootstrap.php   

これはプロジェクトのapplication.iniです

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.date.timezone = "America/New_York"

includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

appnamespace = "Application"

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
includePaths.helpers = APPLICATION_PATH "/views/helpers"    

;Module support
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultModule = "default"
resources.modules[] = ""

resources.db.adapter = PDO_MYSQL
resources.db.params.host = ********
resources.db.params.username = *********
resources.db.params.password = *********
resources.db.params.dbname = *********

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1  
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

これはMyserviceController.phpのコードです

<?php
class MyserviceController extends Zend_Rest_Controller
{
    public function init()
    {
    parent::init();
        $this->_helper->viewRenderer->setNoRender(true);
    }

    public function indexAction() {
        $this->getResponse()->setBody('Hello World');
        $this->getResponse()->setHttpResponseCode(200);
    }

    public function getAction() {
    $this->getResponse()->setBody('Foo!');
        $this->getResponse()->setHttpResponseCode(200);
    }

    public function postAction() {
    $this->getResponse()->setBody('resource created');
        $this->getResponse()->setHttpResponseCode(200);
    }

    public function putAction() {
    $this->getResponse()->setBody('resource updated');
        $this->getResponse()->setHttpResponseCode(200);
    }

    public function deleteAction() {
    $this->getResponse()->setBody('resource deleted');
        $this->getResponse()->setHttpResponseCode(200);
    }
}
?>
4

1 に答える 1

-1

「localhost/projectname/public/index.php/myservice」でindex.phpを使用するのはなぜですか? /index/だけではないのはなぜですか?

ZF のデフォルトの URL 構造は「http://hostname/controller/action/parametes」です。

于 2012-02-25T14:34:51.573 に答える