任何人都可以告诉我如何在Zend中保存Dojo ComboBox元素的ID。对不起,如果这很简单,但我无法找到答案。
我的组合框代码如下
// Create a autocomplete input for counties
$county = new Zend_Dojo_Form_Element_ComboBox('county');
$county->setLabel('County');
$county->setOptions(array(
'autocomplete' => true,
'storeId' => 'countyStore',
'storeType' => 'dojo.data.ItemFileReadStore',
'storeParams' => array('url' => "/clients/client/autocomplete"),
'dijitParams' => array('searchAttr' => 'county')))
->setRequired(true)
->addValidator('NotEmpty', true)
->addFilter('HTMLEntities')
->addFilter('StringToLower')
->addFilter('StringTrim');
我的autocompleteAction的代码如下
public function autocompleteAction()
{
// disable layout and view rendering
$this->_helper->layout->disableLayout();
$this->getHelper('viewRenderer')->setNoRender(true);
// get list of breed names from the breeds table
$qry= Doctrine_Query::create()
->from('PetManager_Model_Counties c');
$result=$qry->fetchArray();
//generate and return JSON string countiesID being the primary key of the table
$data = new Zend_Dojo_Data('countiesID',$result,'countiesID');
echo $data->toJson();
}
表单是用于保存新客户端的输入表单。它操作的表有一个引用表县的字段县,因此只接受Int值。
我想要保存县'countiesID'的主键,从Dojo ComboBox中选择的主键,目前只传递选定的文本,即'Dublin'而不是'10',这当然会在我尝试时抛出异常保存记录。
我知道如何使用标准的组合框来创建一个函数来查询counties表并使用foreach数组通过addMultiOption将主键和县名添加到表单但是我可以弄清楚如何在使用Dojo自动完成组合框时执行此操作。
答案 0 :(得分:1)
我实际上是在Zend社区的帮助下对此进行了分类。
您实际上必须使用FilteringSelect而不是ComboBox来保存记录ID,如下所示
// Create a autocomplete select input for counties
$county = new Zend_Dojo_Form_Element_FilteringSelect('county');
$county->setLabel('County');
$county->setOptions(array(
'autocomplete' => true,
'storeID' => 'countyStore',
'storeType' => 'dojo.data.ItemFileReadStore',
'storeParams' => array('url' => "/clients/client/autocomplete"),
'dijitParams' => array('searchAttr' => 'county')))
->setRequired(true)
->addValidator('NotEmpty', true)
->addFilter('HTMLEntities')
->addFilter('StringToLower')
->addFilter('StringTrim');
我希望这可以帮助ZendNewbie和其他任何对框架有兴趣的人。