Zend_Form_Element завершается ошибкой, когда я добавляю элементы - PullRequest
0 голосов
/ 04 ноября 2010

У меня возникли проблемы с добавлением скрытого элемента формы Zend.

, когда я вызываю addElements, форма завершается ошибкой и печатает следующую ошибку на странице.но только когда я пытаюсь добавить $ formContactID и $ formCustomerID.

Неустранимая ошибка: вызов функции-члена getOrder () для необъекта в / home / coder123 / public_html / wms2 / library /Zend / Form.php в строке 3291

Мой код выглядит следующим образом.

  private function buildForm()
 {
  $Description = "";
  $FirstName = "";
  $LastName = "";
  $ContactNumber = "";
  $Fax = "";
  $Position = "";
  $Default = "";
  $custAddressID = "";
  $CustomerID = "";
  $Email = "";
  $ContactID = "";
  if($this->contactDetails != null)
  {
   $Description = $this->contactDetails['Description'];
   $CustomerID = $this->contactDetails['CustomerID'];
   $FirstName = $this->contactDetails['FirstName'];
   $LastName = $this->contactDetails['LastName'];
   $ContactNumber = $this->contactDetails['ContactNumber'];
   $Position = $this->contactDetails['Position'];
   $Fax = $this->contactDetails['Fax'];
   $Email = $this->contactDetails['Email'];
   $Default = $this->contactDetails['Default'];
   $custAddressID = $this->contactDetails['custAddressID'];
   $ContactID = $this->contactDetails['custContactID'];
  }


  $formfirstname = new Zend_Form_Element_Text('FirstName');
  $formfirstname->setValue($FirstName)->setLabel('First Name:')->setRequired();

  $formlastname = new Zend_Form_Element_Text('LastName');
  $formlastname->setLabel('Last Name:')->setValue($LastName)->setRequired();

  $formPhone = new Zend_Form_Element_Text('ContactNumber');
  $formPhone->setLabel('Phone Number:')->setValue($ContactNumber)->setRequired();

  $formFax = new Zend_Form_Element_Text('FaxNumber');
  $formFax->setLabel('Fax Number:')->setValue($Fax);

  $FormPosition = new Zend_Form_Element_Text('Position');
  $FormPosition->setLabel('Contacts Position:')->setValue($Position);

  $FormDescription = new Zend_Form_Element_Text('Description');
  $FormDescription->setLabel('Short Description:')->setValue($Description)->setRequired();

  $formEmail = new Zend_Form_Element_Text('Email');
  $formEmail->setLabel('Email Address:')->setValue($Email);

  $FormDefault = new Zend_Form_Element_Checkbox('Default');
  $FormDefault->setValue('Default')->setLabel('Set as defualt contact for this business:');

  if($Default == 'Default')
  {
   $FormDefault->setChecked(true);
  }

  $formCustomerID = new Zend_Form_Element_Hidden('customerID');
  $formCustomerID->setValue($customerID);
  if($this->contactID != null)
  {
   $formContactID = new Zend_Form_Element_Hidden('ContactID');
   $formContactID->setValue($this->contactID);
  }

// FORM SELECT 
  $formSelectAddress = new Zend_Form_Element_Select('custAddress');
  $pos = 0;
  while($pos < count($this->customerAddressArray))
  {
   $formSelectAddress->addMultiOption($this->customerAddressArray[$pos]['custAddressID'], $this->customerAddressArray[$pos]['Description']);
   $pos++;
  }
  $formSelectAddress->setValue(array($this->contactDetails['custAddressID']));
  $formSelectAddress->setRequired()->setLabel('Default Address For this Contact:');
// END FORM SELECT

  $this->setMethod('post');
  $this->setName('FormCustomerEdit');

  $formSubmit = new Zend_Form_Element_Submit('ContactSubmit');
  $formSubmit->setLabel('Save Contact');

  $this->setName('CustomerContactForm');
  $this->setMethod('post');


  $this->addElements(array($FormDescription, $formfirstname, $formlastname, 
         $FormPosition, $formPhone, $formFax, $FormDefault, 
         $formEmail, $formSelectAddress, $formContactID, $formCustomerID, $formSubmit));

  $this->addElements(array($formSubmit));

 }

Ответы [ 2 ]

2 голосов
/ 19 февраля 2013

Может быть, вы уже исправили, но на всякий случай.

У меня была та же проблема, и проблема заключалась в названии определенных атрибутов в форме. В вашем случае у вас есть:

  if($this->contactID != null){
   $formContactID = new Zend_Form_Element_Hidden('ContactID');
   $formContactID->setValue($this->contactID);
  }

В тот момент, когда вы добавили $ formContactID в форму, для объекта формы был создан новый внутренний атрибут, который называется «ContactID». Теперь у нас есть $ this-> ContactID и $ this-> contactID.

В соответствии со стандартами PHP это не должно быть проблемой, потому что имена ключей и атрибутов ассоциативных массивов чувствительны к регистру, но я просто хотел использовать ваш код для иллюстрации поведения Zend Form.

Пересмотрите оставшуюся часть кода в вашей форме, чтобы убедиться, что вы не переопределяете какой-либо элемент Zend. Извините за предположение, но поскольку вы не опубликовали весь код для файла формы, его немного сложнее отладить.

Спасибо, и я надеюсь, что это поможет.

0 голосов
/ 04 ноября 2010

Я думаю, что проблема в $this->addElements, когда $formContactID отсутствует из-за правила if($this->contactID != null).

Вы можете обновить свой код, чтобы решить проблему:

.....
$this->addElements(array($FormDescription, $formfirstname, $formlastname, 
      $FormPosition, $formPhone, $formFax, $FormDefault, 
      $formEmail, $formSelectAddress, $formCustomerID, $formSubmit));

if(isset($formContactID)) {
  $this->addElements(array($formContactID));
}
......
...