Вы можете передать действие элементу в качестве параметра:
$element = new Cms_Form_Element_Location(array('action' => 'edit');
Затем добавьте установщик в ваш элемент, чтобы прочитать параметр в защищенную переменную.Если для этой переменной по умолчанию задано значение «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());
}
}
}