2

我在 Zend Framework 中创建了自己的表单元素。我唯一想做的就是在元素第一次创建时向元素添加不同的功能(因此它是由“新”操作请求的),以及在渲染元素以进行编辑时的其他功能(由“编辑”请求)行动)。

我怎么做?我在文档中找不到它。

这是我的代码:

<?php

class Cms_Form_Element_Location extends Zend_Form_Element {

    public function init() {

        App_Javascript::addFile('/static/scripts/cms/location.js');

        $this
            ->setValue('/')
            ->setDescription('Enter the URL')
            ->setAttrib('data-original-value',$this->getValue())

        ;

    }

}

?>

4

1 回答 1

4

您可以将操作作为参数传递给元素:

$element = new Cms_Form_Element_Location(array('action' => 'edit');

然后在您的元素中添加一个 setter 以将参数读入受保护的变量。如果您将此变量默认为“新”,则只需在表单处于编辑模式时传递操作(或者您可以使用请求对象从控制器动态设置参数)。

<?php

class Cms_Form_Element_Location extends Zend_Form_Element 
{

    protected $_action = 'new';

    public function setAction($action)
    {
        $this->_action = $action;
        return $this;
    }

    public function init() 
    {

        App_Javascript::addFile('/static/scripts/cms/location.js');

        switch ($this->_action) {
            case 'edit' :

                // Do edit stuff here

                break; 

            default :

                $this
                    ->setValue('/')
                    ->setDescription('Enter the URL')
                    ->setAttrib('data-original-value',$this->getValue());
            }

    }

}
于 2011-07-07T10:21:03.783 回答