我有一个带下拉字段的Zend_Form.
当用户在URL中设置一个值时,应该在此下拉列表中选择此值作为默认值.
所以我现在所做的是:
$parlang = $this->getRequest()->getParam('lang');
if($parlang){
$this->view->filterForm->getElement('ddLanguage')->setValue($parlang);
}
if ($this->getRequest()->isPost()) {
if($this->view->filterForm->isValid($_POST)){
...
...
...
不,我想检查变量的值是否甚至是下拉列表的有效值?我如何通过表单验证来检查这个问题.是的我可以根据数组检查变量,但这似乎是“与框架作斗争”.
那么Zend如何做这样的事情呢?
编辑:
我感兴趣的所有人的最终解决方案是:
$parlang = $this->getRequest()->getParam('lang');
if($parlang){
$ddLanguage = $this->view->filterForm->ddLanguage;
if($ddLanguage->isValid($parlang)){
$ddLanguage->setValue($parlang);
$language = $parlang;
}
}
最佳答案 我运行了一个快速测试,看起来你可以使用的一个方法是Zend_Form_Element_Select :: getMultiOption()来检查选择值中是否存在该语言.
<?php
$parlang = $this->getRequest()->getParam('lang');
if ($parlang) {
$el = $this->view->filterForm->getElement('ddLanguage');
// attempt to get the option
// Returns null if no such option exists, otherwise returns a
// string with the display value for the option
if ($el->getMultiOption($parlang) !== null) {
$el->setValue($parlang);
}
}