douli2876 2014-04-17 06:21
浏览 30
已采纳

基于条件的Zend表单元素

I have came across with one problem i need to show different form elements

  • Based on different condition to the user i know it will be easy in core php but want to do in zend environment

EXAMPLE:

If person is disabled we will show two radio buttons

$disable = new Shaadi_Form_Element_radio('disablitiy');
$disableArr = array(""=>" Doesn't Matter","Y"=>" show disabled");

IF he is not disabled

$disable = new Shaadi_Form_Element_radio('disablitiy');
$disableArr = array(""=>" Doesn't Matter","N"=>" do not show disabled");

I want this code to be done in form how can I optimize this please help me

  • 写回答

3条回答 默认 最新

  • dounangqie4819 2014-04-17 07:22
    关注

    Whenever a form - or any object, for that matter - is dependent upon some information external to the form, I usually pass that information in the form's constructor. Then I inspect it later in init() when I am building the form.

    Example:

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

    Usage - perhaps in a controller - is then something like:

    $form = new My_Form(true);  // for a disabled used
    $form = new My_Form(false);  // for a non-disabled user
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题