我在Zend Framework中创建了自己的表单元素。我唯一想做的是在元素首次创建时添加一个不同的功能(因此它被'new'动作请求),以及渲染元素进行编辑时的其他功能(由'edit'请求)动作)。
我该怎么做?我在文档中找不到它。
这是我的代码:
<?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())
;
}
}
&GT;
答案 0 :(得分:4)
您可以将操作作为参数传递给元素:
$element = new Cms_Form_Element_Location(array('action' => 'edit');
然后在元素中添加一个setter,将参数读入受保护的变量。如果将此变量默认为“new”,则只需在表单处于编辑模式时传递操作(或者您可以使用请求对象从控制器动态设置参数)。
<?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());
}
}
}