2011-01-29 6 views
5

У меня есть форма Zend, чтобы добавить что-то в базу данных. И затем я хочу использовать эту форму для редактирования того, что я добавил к databese. Есть ли возможность использовать эту форму (заполнить его из базы данных и отобразить его ???) у меня есть это в мой контроллер:ZEND, Edit form

public function editAction() { 

    if (Zend_Auth::getInstance()->hasIdentity()) { 
     try { 
      $form = new Application_Form_NewStory(); 
      $request = $this->getRequest(); 
      $story = new Application_Model_DbTable_Story(); 
      $result = $story->find($request->getParam('id')); 

      // $values = array(
      //  'title' => $result->title, 
      //  'story' => $result->story, 
      //); 

      if ($this->getRequest()->isPost()) { 
       if ($form->isValid($request->getPost())) { 
        $data = array(
         'title' => $form->getValue("title"), 
         'story' => $form->getValue("story"), 
        ); 
        $where = array(
         'id' => $request->getParam('id'), 
        ); 
        $story->update($data, $where); 
       } 
      } 
      $this->view->form = $form; 
      $this->view->titleS= $result->title; 
      $this->view->storyS= $result->story; 
     } catch (Exception $e) { 
      echo $e; 
     } 
    } else { 
     $this->_helper->redirector->goToRoute(array(
      'controller' => 'auth', 
      'action' => 'index' 
     )); 
    } 
} 

На мой взгляд:

<?php 
try 
{ 
$tmp = $this->form->setAction($this->url()); 
//$tmp->titleS=$this->title; 
//$tmp->storyS=$this->story; 

//echo $tmp->title = "aaaaa"; 
} 
catch(Exception $e) 
{ 
    echo $e; 
} 

И когда я пытаюсь что-то изменить в этом представлении, я имею в виду, что любое значение отличается от NULL. У меня есть ошибка, которую я не могу сделать, так что есть ли возможность повторно использовать эту форму? Или нет?

Спасибо!

ответ

11

Zend_Form имеет метод populate(), который устанавливает значения формы на основе данных массива. Так что просто:

$form->populate($result->current()->toArray()); 

и форма будет заполнена на основе ключей из массива.

+1

Да Это работает! Большое спасибо! – canimbenim