настройка отправки имени вне формы - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть zend_form для обновления и вставки данных.Я хочу, чтобы на нем были разные ярлыки sumbit, но, похоже, это не работает.Моя форма:

class Staff_Form extends Zend_Form
{
    public function init()
    {
        $this->setAction('')
                ->setMethod('post');

        $firstname = new Zend_Form_Element_Text('firstname');
        $firstname->setLabel('firstname')->setRequired(true);

        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setName('insert');

        $this->addElements(array(
            $firstname,
            $submit
        ));
    }
}

Теперь я ожидаю, что это сработает:

//in controller
$form = new My_Form();
$form->getElement('submit')->setName('update');

Но это дает фатальную ошибку: Фатальная ошибка : вызов функции-членаsetName () для необъекта в ..... Итак, я попытался:

$first = $form->getElement('firstname');
var_dump($first);
echo 'html break';
$submit = $form->getElement('submit');
var_dump($submit);
die();

Похоже, $ submit равен NULL

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2011

Должна действительно быть ошибка печати где-то в вашем коде, я только что протестировал следующее, которое работает:

class Application_Form_Test extends Zend_Form
{
  public function init()
  {
    $sub = new Zend_Form_Element_Submit('submit');
    $sub->setLabel('Submit Me');

    $this->addElement($sub);
  }
}

//controller - It works
$form = new Application_Form_Test();
$sub = $form->getElement('submit');
$sub->setName('wahahahar');
1 голос
/ 30 сентября 2011

Вы можете передать значение submit при создании формы.

// form
class App_Form_Something extends Zend_From {
  protected $submitName

public function init() {
  $this->addElement('submit',$this->submitName, array(
    'label' => $this->submitName
  ));

public function setSubmitName($submitName) {
  $this->submitName = $submitName;
}
}

Тогда в вашем контроллере

$form = new App_Form_Something(array('submitName' => 'Update or something'));

Я часто использую эту технику для передачи идентификаторов определенных объектов базы данных, чтобы они могли автоматически заполняться и т. Д.

Удачи

...