zacznę może od tego jak jest zbudowana moja aplikacja:
strony wyświetlają się na zasadzie przyjaznych adresów - w bazie jest pole o nazwie adresu, skrypt wyciąga to z bazy i ładnie dopasowuje, wygląda to tak:
application.ini
resources.router.routes.post_show.type = "Zend_Controller_Router_Route_Regex" resources.router.routes.post_show.route = "([a-zA-Z0-9\-_]+)\.html" resources.router.routes.post_show.defaults.controller = "index" resources.router.routes.post_show.defaults.action = "showpost" resources.router.routes.post_show.reverse = "%s.html" resources.router.routes.post_show.map.1 = "address"
akcja showpost odpowiedzialna za wyświetlenie posta
$Post = new Application_Model_DbTable_Post(); $address = $this->getRequest()->getParam('address'); $select = $Post->select()->where('address = ?', $address); $this->view->blog_posts = $Post->fetchRow($select); if (!$this->view->blog_posts) { throw new Zend_Controller_Action_Exception('Błąd #1!', 404); }
w widoku akcji showpost chce dodać możliwość komentowania posta.
sam formularz już działa i jeśli nie ma błędów dodaje się właściwie do bazy
problem w tym jeśli są błędy - bo walidacja mi wszystko rozwala, tutaj właśnie potrzebuje pomocy...
przed akcją wyświetlania posta dodałem akcje dodania komentarza:
początek showpost
$this->view->form = new Application_Form_Addcomment(); $form = new Application_Form_Addcomm(); if ($form->isValid($this->getRequest()->getPost())) { $User = new Application_Model_DbTable_Commdb(); $auth = Zend_Auth::getInstance(); if (!$auth->hasIdentity()) { $logg = $form->getValue('user'); } else { $logg = $auth->getIdentity(); } $ip = $_SERVER['REMOTE_ADDR']; 'user' => $logg, 'www' => $form->getValue('www'), 'comment' => $form->getValue('comment'), 'post_id' => $this->getRequest()->getPost('post_id') ); $User->createRow($dane)->save(); return $this->_redirect('komentarz-dodany'); }
akcja formularza jest maskowana tz.: kierowana j/n:
resources.router.routes.dodaj.route = "dodaj" resources.router.routes.dodaj.defaults.controller = "index" resources.router.routes.dodaj.defaults.action = "showpost"
i jeśli nie popełnię błędu w formularzu to wszystko pójdzie sprawnie i komentarz się doda. Jeśli natomiast zrobię błąd to próbuje wyświetlić akcję "showpost" ale w adresie mam http://nazwastrony.pl/dodaj zamiast http://nazwastrony.pl/tytul-newsa.html i oczywiście akcja showpost nie znajduje posta "dodaj" w bazie i wywala błąd...
jak to logicznie uporządkować? co mógłbym zrobić lepiej aby to sprawniej działało? mogę całość przebudować jeśli będzie miało to sens. Będę wdzięczny za wszystkie pomocne głowy

//edit - temat dalej aktualny, nie znalazłem rozwiązania... mógłby ktoś się przyjrzeć temu? dzięki...