2

複数の開発者を経たサイトを引き継いでいます。によると、このサイトは Zend バージョン 1.12.0 を使用Zend_Version::VERSIONしています。これは私にとって新しいフレームワークです。App_Form_Customers_Editこのサイトには、 を拡張する というフォーム クラスがありますZend_Form。フォームのアクションは /customers/edit で、送信されるとメソッド editActionCustomersControllerが実行されます。

そのため、新しいフォームを作成するためApp_Form_Customers_EditAddressに、 と同じディレクトリに新しいクラスを作成し、そのApp_Form_Customers_Editアクションを に設定し、クラスで/customers/editaddress呼び出される関数を作成し、フォームをテストしました。しかし、「リソース 'customers::editaddress' が見つかりません」というエラーが表示されますeditaddressActionCustomersController

フォーム自体は適切に表示されています。私が知る限り、機能する他のフォームとまったく同じパターンを使用しており、zf コマンドを使用しないことを除けば、Zend のドキュメントでここで規定されているのと同じ方法です: http: //framework.zend.com/manual/1.12/en/learning.quickstart.create-form.html

新しいフォームを機能させるにはどうすればよいですか? 更新する必要があり.zfproject.xmlますか? 作業フォームに関連するものは何も表示されません。

のコードは次のApp_Form_Customers_Editとおりです。

class App_Form_Customers_Edit extends Zend_Form
{
  public function init ()
  {
    $this->addPrefixPath('App_Form', 'App/Form/');
    $this->setMethod('post');
    // ... The rest is just calls to $this->addElement
  }
}

そしてのためにEditAddress

class App_Form_Customers_EditAddress extends Zend_Form
{
  public function init ()
  {
    $this->addPrefixPath('App_Form', 'App/Form/')
         ->setMethod('post')
         ->setAction('/customers/editaddress');

    $this->addElement('submit', 'active', ['value' => 'Activate']);
    $this->addElement('submit', 'remove', ['value' => 'Remove']);
    $this->addElement('hidden', 'id');
  }
}
4

2 に答える 2

1

acl 宣言を確認します。acl を使用していて、アクションのルールを宣言していない場合、このタイプのエラーが発生する可能性があります。

于 2013-03-28T10:32:08.310 に答える
0

最良の推測:

以前の開発者がカスタム ルートをどこかに実装しました。おそらくapplication.iniまたはboostrap.phpにあります。このカスタム ルートは特定の URL を探しており/customers/edit、有効なルートに準拠していますが、準拠してい/customers/editaddressません。

これは、エラーが「ページが見つかりません」、コントローラーの欠落、アクションメッセージの欠落ではなく、リソースの欠落である可能性が高いと思います。そのため、ルーターが無効なリソースを有効なルートに一致させようとしているように見えます。

幸運を

于 2013-03-28T10:08:12.573 に答える