2

我正在接管一个经过多个开发人员的网站。根据 ,该站点使用 Zend 1.12.0 版Zend_Version::VERSION,这对我来说是一个新框架。在网站上,有一个名为 的表单类App_Form_Customers_Edit,它扩展了Zend_Form. 表单的action是/customers/edit,提交时CustomersController执行editAction的方法。

因此,为了创建一个新表单,我App_Form_Customers_EditAddress在与 相​​同的目录中创建了一个新类App_Form_Customers_Edit,并将其操作设置为/customers/editaddress,创建了一个editaddressActionCustomersController类中调用的函数并测试了表单。但我收到一条错误消息,提示“找不到资源'customers::editaddress'”

表单本身显示正确,据我所知,我使用的模式与其他有效的表单完全相同,除了不使用 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.iniboostrap.php中。此自定义路由正在寻找特定的 url 并/customers/edit符合有效路由但/customers/editaddress不符合。

我认为这很可能是因为您的错误是缺少资源,而不是“找不到页面”或缺少控制器或缺少操作消息。因此,路由器似乎试图将无效资源与有效路由匹配。

祝你好运

于 2013-03-28T10:08:12.573 回答