Zend Framework Tutorial - 5

editAction

La Action per la modifica di una news precedentemente inserita dall'utente ha una struttura molto simile a quella per l'inserimento vista nella precedente pagina. La principale differenza consiste nel fatto che se la pagina viene mostrata per la prima volta non basta caricare il template del form di inserimento/modifica ma bisogna anche recuperare i dati della news dal database e passarli al template. Queste operazioni vengono realizzate alla fine dello script, nel blocco "else" (righe 34-38). Si noti come anche in questo caso viene effettuato un controllo sulla news recuperata dal database. Infatti poiché l'id della news proviene dall'utente, questo potrebbe esser manomesso e quindi non associato ad una news realmente presente nel database. In questo caso viene sollevata una eccezzione che si traduce, come visto nella viewAction, in un messaggio di pagina non trovata.

public function editAction()
{
    $this->view->titoloPagina = 'Modifica news';

    // Utilizza il template 'news/news-form.phtml' al posto di  'news/edit.phtml'
    $this->_helper->viewRenderer->setScriptAction('news-form');

    $news = new News;

    $request = $this->getRequest();
    $newsId  = $request->getParam('id');
    if($request->isPost())
    {
        $autore        = $request->getPost('autore');
        $titolo        = $request->getPost('titolo');
        $testoIntro    = $request->getPost('testo_intro');
        $testoCompleto = $request->getPost('testo_completo');

        try {
            $news->insertUpdateNews($newsId,$autore,$titolo,$testoIntro,$testoCompleto);
            $this->_flashMessenger->addMessage("News '$titolo' modificata con successo");
            $this->_redirect('/');
        } catch (Zend_Exception $e) {
            $this->view->errorMsg = $e->getMessage();
            $this->view->news = array($autore,$titolo,$testoIntro,$testoCompleto);
            $this->view->news = array('autore' => $autore,
            'titolo'        => $titolo,
            'testo_intro'   => $testoIntro,
            'testoCompleto' => $testoCompleto);
        }
    }
    else
    {
        $news = $news->getNewsById($newsId);
        if(!$news) {
            throw new Zend_Controller_Action_Exception;
        }
        $this->view->news = $news;
    }
}

1 commento

1 Grisou Grisou lunedì 23 novembre 2009, ore 21:43
Ciao, grazie anche a questi tutorial, dai quali ho preso alcuni spunti ho convertito il mio vecchio sito (Grisou.org) precedentemente realizzato con Joomla! ad un'applicazione custom realizzata con Zend_Framework. Spero presto di poter portare questa esperienza nella società per cui lavoro (Excite - www.excite.it / GoAdv - www.goadv.net),
Effettua l'accesso o registrati per inserire un commento