Php 基于条件的Zend表单元素
我遇到了一个需要显示不同表单元素的问题Php 基于条件的Zend表单元素,php,zend-framework,Php,Zend Framework,我遇到了一个需要显示不同表单元素的问题 根据用户的不同情况,我知道在核心php中很容易做到,但我希望在zend环境中做到这一点 示例: 如果此人被禁用,我们将显示两个单选按钮 $disable = new Shaadi_Form_Element_radio('disablitiy'); $disableArr = array(""=>" Doesn't Matter","Y"=>" show disabled"); $disable = new Shaadi_Form_Elem
- 根据用户的不同情况,我知道在核心php中很容易做到,但我希望在zend环境中做到这一点
$disable = new Shaadi_Form_Element_radio('disablitiy');
$disableArr = array(""=>" Doesn't Matter","Y"=>" show disabled");
$disable = new Shaadi_Form_Element_radio('disablitiy');
$disableArr = array(""=>" Doesn't Matter","N"=>" do not show disabled");
如果他没有残疾
$disable = new Shaadi_Form_Element_radio('disablitiy');
$disableArr = array(""=>" Doesn't Matter","Y"=>" show disabled");
$disable = new Shaadi_Form_Element_radio('disablitiy');
$disableArr = array(""=>" Doesn't Matter","N"=>" do not show disabled");
我希望此代码以表单的形式完成如何优化此代码请帮助我每当表单或任何对象依赖于表单外部的某些信息时,我通常在表单的构造函数中传递这些信息。然后,当我构建表单时,我将稍后在
init()
中检查它
例如:
class My_Form extends Zend_Form
{
protected $hasDisability;
public function __construct($hasDisability)
{
$this->hasDisability = (bool) $hasDisability;
parent::__construct();
}
public function init()
{
// Add all your other elements
// Blah, blah
// Add the element that is dependent upon the $hasDisability value
$disable = new Shaadi_Form_Element_radio('disablitiy');
$disableArr = $this->hasDisability
? array(""=>" Doesn't Matter","Y"=>" show disabled")
: array(""=>" Doesn't Matter","N"=>" do not show disabled");
// Add the $disableArr into the radio element
$disable->setMultiOptions($disableArr);
}
}
用法-可能在控制器中-类似于:
$form = new My_Form(true); // for a disabled used
$form = new My_Form(false); // for a non-disabled user
要在表单中实现元素,根据某些条件,需要通过控制器传递表单构造函数中的用户禁用选项。 您可以执行以下步骤在视图中显示单选按钮: 表格编号:
class Application_Form_User extends Zend_Form {
public function init() {
$formAttribs = $this->getAttribs();
$isDisable = $formAttribs['disable'];
if (!$disabled) {
$disableArr = array(""=>" Doesn't Matter","Y"=>" show disabled");
} else {
$disableArr = array(""=>" Doesn't Matter","N"=>" do not show disabled");
}
$this->addElement('radio', 'disability', array(
'label' => 'Disability',
'required' => true,
'multiOptions' => $disableArr,
));
}
}
In controller:
public function addAction() {
$disable = ($user->disable) ? true : false;
$form = new Application_Form_User(array('disable' => $disable));
$this->view->form = $form;
}
在视图中,您可以获得如下“残疾”元素:
<?php echo $this->form->getelement('disability'); ?>
在表单中,定义您的无线电元素:
$disable = new Shaadi_Form_Element_radio('disablitiy');
在控制器中,调用此元素并添加好的选项:
if ($disable)
$disableArr = array(""=>" Doesn't Matter","Y"=>" show disabled");
else
$disableArr = array(""=>" Doesn't Matter","N"=>" do not show disabled");
$form->getElement('disablitiy')->setMultiOptions($disableArr);