-1

私はZendFrameworkを初めて使用し、通常のApache 2+PHPサーバーで使用しています。

Zend_Table_Abstractを拡張するモデルを使用したいと思います。/ application / modelsディレクトリに配置しましたが、これらのファイルは含まれていません(構文エラーがありますが、アプリは正常に動作します)。それらを含めるために必要なアクションは何ですか?Bootstrapで何をする必要があり、どの命名規則に従う必要がありますか?ユーザー記事のような通常の名前を使用している人を見たことがあります。

/application/models/Languages.php:

<?php
adasdasdadasd
echo 'hi';

class Languages extends Zend_Db_Table_Abstract {
    protected $_name = 'languages';
}

/application/controllers/LanguageController.php

<?php

class LanguagesController extends Zend_Controller_Action {
    public function indexAction() {
        $languages = new Languages();

        $this->view->languages = $languages->select();
    }
}

/application/Bootstrap.php(いくつかの例または回答からコピーしたという理由だけで、いくつかのコードがあります)

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
    protected function _initAutoload() {
        $moduleLoader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath' => APPLICATION_PATH)
        );

        $autoloader = Zend_Loader_Autoloader::getInstance();
        $autoloader->registerNamespace(array('Application_'));

        return $moduleLoader;
    }

    protected function _initResourceAutoloader()
    {
        $autoloader = new Zend_Loader_Autoloader_Resource(array(
            'basePath'  => APPLICATION_PATH,
            'namespace' => 'Application_',
        ));

        return $autoloader;
    }

    protected function _initFrontController()
    {
        $controller = Zend_Controller_Front::getInstance();

        $controller->setControllerDirectory(APPLICATION_PATH . '/controllers');

        if ($controller->getParam('bootstrap') === null) {
            $controller->setParam('bootstrap', $this);
        }

        return $controller;
    }

    protected function _initApplication() {
    }

    protected function _initModuleConfig()
    {
    }

    protected function _initLayout(){ 
        return Zend_Layout::startMvc(); 
    }

    protected function _initViewHelpers() {
        $this->bootstrap('layout');
        $layout = $this->getResource('layout');
        $view = $layout->getView();
        $view->doctype('XHTML1_STRICT');
        $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
        $view->headTitle()->setSeparator(' - ');
        $view->headTitle('My Application');
        $view->headLink()->appendStylesheet('css/general.css');
        $view->headLink()->appendStylesheet('css/navigation.css');
    }

    protected function _initNavigation() {
        $this->bootstrap('layout');
        $layout = $this->getResource('layout');
        $view = $layout->getView();

        $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');

        $navigation = new Zend_Navigation($config);
        $view->navigation($navigation);
    }
}

/application/configs/application.ini

[production]

; Models
includePaths.models = APPLICATION_PATH "/models/"

; Debug output
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

; Bootstrap
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

; Database
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "localhost"
resources.db.params.dbname = "dabase"
resources.db.params.username = "root"
resources.db.params.password = "password"
resources.db.isDefaultTableAdapter = true

[development : production]

; Debug output
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

; Database
resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "localhost"
resources.db.params.dbname = "dabase"
resources.db.params.username = "root"
resources.db.params.password = "password"
resources.db.isDefaultTableAdapter = true
4

1 に答える 1

1

Zendオートローダーは、モデルをロードする方法に合った適切なファイルIDを簡単に見つけることができないため、モデルの名前付け方法を変更する必要があります。したがって、このようなモデルを使用する代わりに、次のようにします。

class Language extends Zend_Db_Table_Abstract {
....
}

次のように名前を付ける必要があります。

class Application_Model_Language extends Zend_Db_Table_Abstract {
....
}

次にインスタンス化します。

$languages = new Application_Model_Language();

モデルは異なる方法でマッピングされ、これを機能Application_Model_Languageさせるにはモデルクラスを配置する必要があることに注意してくださいapplication/models/Language.php

于 2012-08-31T19:10:03.557 に答える