Я создал элемент Select ELement в форме.
$parentId = $this -> createElement('select', 'parent_id');
$parentId -> setLabel("Select a parent menu:")
-> setRequired(true);
$parentId->addMultiOption(0, 'None');
$this->addElement($parentId);
Его параметр должен загружаться в соответствии со значением, переданным из строки запроса или URL-адреса.Итак, в моем контроллере я извлек необходимые значения из URL и загрузил дополнительный элемент в элемент, используя следующий код
private function renderParentElement($menu_id, $parent = 0) {
$mapper = $this -> mapper();
$select = $mapper -> select();
$select -> where("parent = ?", $parent)
-> where("menu_id = ?", $menu_id);
$menus = $mapper -> fetchAll($select);
if($menus -> count() > 0) {
foreach($menus as $menu) {
$this -> form() -> getElement('parent_id') -> addMultiOption($menu -> id, $menu -> label);
}
}
}
. И метод Action, вызывающий указанный выше метод, это
public function addAction()
{
$menu = $this->_request->getParam('menu');
$mapperMenu = new Application_Model_Mapper_Menu();
$this -> view -> menu = $mapperMenu -> find($menu);
if($this -> _request -> isPost() && $this -> form() -> isValid($_POST)) {
$data = $this -> form() -> getValues();
$menuItem = $this -> model();
$menuItem -> setParent($data['parent']);
$menuItem -> setMenu_id($data['menu_id']);
$menuItem -> setLabel($data['label']);
$menuItem -> setLink($data['link']);
$menuItem -> setPage_id($data['page_id']);
$this -> mapper() -> save($menuItem);
$this -> _request -> setParam('menu', $data['menu_id']);
$this -> _forward('index');
}
$this -> form() -> populate(array('menu_id' => $menu));
$this -> renderParentElement($menu, 0);
$this->view->form = $this -> form();
}
Теперь все работало нормально. Элементы были загружены правильно и отображались правильно.Но когда я отправил его, поле выбора выдает ошибку как 1 is not found is the haystack
, здесь 1 - это значение выбранного элемента, которое загружается из контроллера.
Пожалуйста, помогите мне решить эту ошибку !!!