Zend Form Dynamic Ajax City Загрузка - PullRequest
0 голосов
/ 19 января 2011

Я работаю над проектом, использующим Zend Framework, и мне нужна динамическая загрузка ajax-городов при выборе штата. Каждое состояние связано с городами в базе данных.

У меня есть форма Create.php class Application_Form_Create extends Zend_Form {</p> <pre><code>public function init() { $this->setMethod('POST'); ... $state = new Zend_Form_Element_Select('state'); $state->setLabel('States:') ->addMultiOptions($DataBaseStatesArray); $this->addElement($state); $city = new Zend_Form_Element_Select('city'); $city->setLabel('Cities:') ->addMultiOptions($DataBaseCitiesArray); $this->addElement($city); $submit = new Zend_Form_Element_Submit('submit'); $this->addElement($submit);

}

форма загружается для просмотра на контроллере

... function createAction(){ $this->view->form = new Application_Form_Create(); }

Просмотр

<?=$this->form;?>

Как я могу загрузить города на основе выбранного состояния, используя ресурсы Zend Framework?

Спасибо

1 Ответ

2 голосов
/ 19 января 2011

Вы можете использовать это в методе init для вашего контроллера, чтобы изменить характер действия во время выполнения на выделенное действие Ajax, которое автоматически отключит рендеринг макета.

Контроллер

public function init()
{
$ajaxContext = $this->_helper->getHelper('AjaxContext');
$ajaxContext->addActionContext('check', 'html');
$ajaxContext->initContext();
}

Действие

public function checkAction()
{
// code to run upon ajax request
// ...
// ...

$this->_view->result = $result; // pass the result to the view
}

И вы можете просмотреть файл так же просто, как этот

<?php echo $this->result; ?>

, тогда вам просто нужно убедиться, что содержимое представления в любом формате, который вы хотите, HTML, XML, JSON

Дополнительная информация в главе 5 книги Zend Framework в действии

...