2013-03-27 3 views
2

Я занимаюсь сайтом, который прошел через нескольких разработчиков. Сайт использует Zend версии 1.12.0, согласно Zend_Version::VERSION, что является новой основой для меня. На сайте есть класс формы App_Form_Customers_Edit, который распространяется на Zend_Form. Действие формы - это/клиенты/редактирование, а при отправке - метод editAction из CustomersController.Zend_Form submit> Resource 'controller :: action' not found

Таким образом, чтобы создать новую форму, я создал новый класс App_Form_Customers_EditAddress в том же каталоге, App_Form_Customers_Edit, и установите его действие на /customers/editaddress, создал функцию под названием editaddressAction в CustomersController классе и протестировал форму. Но я получаю сообщение об ошибке «Ресурс» клиентов: editaddress «not found»

Сама форма отображается правильно, и насколько я могу судить, я использую тот же шаблон, что и другая форма, которая работает , и кроме того, что не используется команда 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'); 
    } 
} 

ответ

1

Проверьте наличие acl-деклараций. Если вы используете acl и вы не объявили правила для действия, вы можете получить этот тип ошибки.

+0

ДА! Вот и все. Понадобился время, чтобы найти его там, где он определил ресурсы в базе данных. Спасибо! – turibe

0

Догадке:

Ваш бывший разработчик реализовал собственный маршрут где-то. Возможно, в документе application.ini или boostrap.php. Этот пользовательский маршрут ищет конкретные URL-адреса, а /customers/edit соответствует действующему маршруту, но /customers/editaddress нет.

Я думаю, что это скорее всего потому, что ваша ошибка - это недостающий ресурс, а не «страница не найдена» или отсутствующий контроллер или отсутствует сообщение о действии. Поэтому кажется, что маршрутизатор пытается сопоставить недопустимый ресурс с допустимым маршрутом.

Удачные действия

+0

Спасибо. В конце концов, это не так, но я все равно ценю ваше время. – turibe

Смежные вопросы