0

私はこれを解決するためにオンラインで見つけたさまざまな方法を試しましたが、うまくいきませんでした。誰かが私を助けてくれますか。

このエラーが発生します

致命的なエラー:クラス'Admin_Form_Login'がpathToProject/ modules / admin / controllers/LoginController.phpの13行目に見つかりません

私のプロジェクトは

応用

---モジュール

------管理者

--------コントローラー

--------フォーム

--------モデル

--------ビュー

- - - デフォルト

--------コントローラー

--------フォーム

--------モデル

--------ビュー

- - - 私たちに関しては

--------コントローラー

--------フォーム

--------モデル

--------ビューなど

私のコントローラー

class Admin_LoginController extends Zend_Controller_Action
{

  public function init()
  {
     /* Initialize action controller here */
  }

  public function indexAction()
  {
      $form = new Admin_Form_Login();
      $this->view->form = $form;
      // action body
  }
}

私のフォーム

class Admin_Form_Login extends Zend_Form
{

public function init()
{
    /* Form Elements & Other Definitions Here ... */

    $this->setAction("/admin/index/login")->setMethod("post");

    $username = new Zend_Form_Element_Text('username');
    $username->setLabel('Username')
    ->setOptions(array('size' => '30'));


    $password = new Zend_Form_Element_Password('password');
    $password->setLabel('Password')
    ->setOptions(array('size' => '30'));


    $submit = new Zend_Form_Element_Submit('submit');
    $submit->setLabel('Log in')
    ->setOptions(array('class' => 'submit'));

    $this->addElement($username)
    ->addElement($password)
    ->addElement($submit);


}


}

MY Bootstrap.php

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initAutoload() {
        $autoloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Admin_',
        'basePath' => APPLICATION_PATH."/modules/admin",
    ));
    return $autoloader;
    }
}

これが私のアプリのiniファイルです。

[bootstrap]

Autoloadernamespaces[] = "Admin_"
Autoloadernamespaces[] = "Default_"
Autoloadernamespaces[] = "Aboutus_"

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

resources.view.encoding = "UTF-8"
resources.view.basePath = APPLICATION_PATH "/views/"

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

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.params.prefixDefaultModule = "1"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

admin.resources.layout.layout = layout
admin.resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
default.resources.layout.layout = default
default.resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"

[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

と私の見解

$this->form

助けてくれてありがとう。


私は本番部分に以下を追加しました。私のapplication.iniで、動作し始めました。理由はわかりません。

Autoloadernamespaces[] = "Admin_"
Autoloadernamespaces[] = "Default_"
Autoloadernamespaces[] = "Aboutme_"

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

resources.view.encoding = "UTF-8"
resources.view.basePath = APPLICATION_PATH "/views/"

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

3 に答える 3

0

私のためのこの仕事:

application / configs/application.iniにあります

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""

application/Bootstrap.phpで

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    /**
     * @return Zend_Application_Module_Autoloader
     */
    protected function _initAutoload()
    {
        $autoloader = new Zend_Application_Module_Autoloader(array('namespace' => '', 'basePath' => APPLICATION_PATH));
        return $autoloader;
    }
}

modules / admin/Bootstrap.phpにあります

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{

}

ログインフォームはmodules/admin / formsにあり、コントローラーはmodules / admin/controllersにある必要があります。

チェックアウトがお役に立てば幸いです。

于 2012-08-31T07:42:41.127 に答える
0

Daveを聞いて、Admin_Bootstrapクラスを空にします。_initメソッドが必要な場合は、それらをアプリケーションレベルのブートストラップに配置します。いずれにせよ、すべてのブートストラップクラスはすべてのリクエストで実行されるため、不注意によるオーバーライドを防ぐために、アプリケーションレベルで_initメソッドを配置します。

モジュールのブートストラップがにあることを確認しますapplication/modules/admin/Bootstrap.phpすべてのモジュールにブートストラップが必要です)。これにより、リソースオートローダーが正しく機能するようになります。フォームはオートローダーで事前定義されたリソースであるため、_initメソッドは必要ありません。

application.iniに、モジュールをアクティブ化するために必要な最小限のものが含まれていることを確認してください。

resources.modules = ""
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

echoそして最後に、あなたの見解で忘れないでください:

$this->form

する必要があります:

echo $this->form

幸運を!

于 2012-08-31T07:08:01.677 に答える
-1

これを試して:

protected function _initAutoload() {
    $autoloader = new Zend_Application_Module_Autoloader(array(
        'namespace' => '',
        'basePath' => APPLICATION_PATH,
    ));
    return $autoloader;
}

名前空間はありません(つまり、Application_がある場合のみ)。

設定ファイルについて:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

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

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] =

resources.layout.layout = "layout"
default.resources.layout.layoutPath = "/views/layout"
admin.resources.layout.layoutPath = "/views/layout" 

[staging : production]


[testing : production]

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
于 2012-08-30T23:05:01.607 に答える