Zend表动态Ajax城市加载

时间:2011-01-19 17:32:45

标签: jquery ajax zend-framework zend-form

我正在使用zend框架开发项目,我需要通过状态选择加载动态ajax城市。每个状态都与数据库中的城市相关联。

我有一个表单Create.php class Application_Form_Create extends Zend_Form {

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);

}

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();
}

如何使用zend框架资源根据所选状态加载城市?

由于

1 个答案:

答案 0 :(得分:2)

您可以在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

本书Zend Framework in Action

第5章的更多信息