2011-01-19 47 views
0

我正在使用zend框架开展一个项目,我需要通过状态选择来加载一个动态Ajax城市。每个状态都与数据库中的城市相关联。Zend Form Dynamic Ajax City Loading

我有一个表格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); 

}

形式加载到查看器

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

查看

<?=$this->form;?> 

我如何可以加载基于城市使用zend框架资源选择状态?

感谢

回答

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

在这本书的第5章

更多信息Zend Framework in Action

+0

好吧,我这样做不过Zend的形式validade阿贾克斯插入的数据和“城市”说,在草垛 – dextervip 2011-02-10 20:27:38