Инстанция Zend Form молча проваливается в белом экране смерти - PullRequest
0 голосов
/ 05 декабря 2010

Zend новичок пытается настроить и использовать Zend_Form.

Только для справки: я на Zend Framework Версия: 1.11.1 на Win XP с Apache 2. что-то.Я работаю над сайтом, который по большей части работает просто отлично.(Кто-то еще начал это. Я должен расширить его).

У меня проблемы с областью форм, и я пытаюсь представить Zend_Form в надежде, что это каким-то образом упростит ситуацию.Но попытка использовать Zend_Form представляет свои собственные проблемы.

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

Данные следующие:

Dir Structure:  
MYAPPNAME  
....controllers  
....forms  
....models  
....services  
....views  

Bootstrap.php содержит:

protected function _initAutoLoading()
{
$loader = new Zend_Loader_Autoloader_Resource(array(
'namespace' => 'MYAPPNAME',
'basePath' => APPLICATION_PATH . '/modules/MYAPPNAME',
));
$loader->addResourceTypes(array(
  'model' => array(
'path' => 'models',
'namespace' => 'Model'),
  'form' => array(
'path' => 'forms',
'namespace' => 'Form'),
  'service' => array(
'path' => 'services',
'namespace' => 'Service')));
}

Это прекрасно работает для моделей с такими именами, как:

class MYAPPNAME_Model_DataRecordName extends Doctrine_Record
{
 etc...

Но, похоже,быть неудачным для форм ... хотя обратите внимание, это мой первый опыт использования Zend_Form.

Моя форма определена в файле MYAPPNAME / forms / Formtest.php:

<?php

class MYAPPNAME_Form_Formtest extends Zend_Form
{
 public function init($action){

  $this->setAction($action)
   ->setMethod('post')
   ->setAttrib('id', 'formtestForm');

  $email = $this->addElement( 'text', 'email',
   array('label', => 'EMail'));
  )

  $submit = $this->addElement('submit', 'Submit and Be Free!');
 }// End init
} // End class def

Форма отображается в представлении, определенном как:

<div class=""testForm">
<p style="margin-top:20px; margin-bottom:10px"">Explanatory Text</p>
<h2>This is a Form Test</h2>

<?php echo $this->formResponse; ?>
<?php echo $this->form; ?>

<hr>
<p>FORM ABOVE THIS BAR</p>
</div>

Представление работает просто отлично.

Управляется действием (в работающем контроллере), определенным как:

 public function formtestAction(){
  echo "formtestAction: ENTERED";

  $form = new MYAPPNAME_Form_Formtest('ThisController/formtest2');    
  //$form =  "<p>GARBAGE DATA</p>";

  if(!empty($form)){$this->view->form = $form;}
  else{
   $form = "<p>THE FORM VAR IS EMPTY</p>";
   $this->view->form = $form;

   $formResponse = "<p>INSTANTIATION FAILED</p>";
   $this->view->formResponse = $formResponse;
  }
 }
 public function formtest2Action(){
  echo "formtest2Action: ENTERED";
 }

Если я закомментирую как экземпляр формы, так и строки данных мусора, я получу корректный вывод в представлении.Если я установлю для $ form «GARBAGE DATA», я также получу допустимый предсказуемый вывод.

Однако, когда я пытаюсь создать экземпляр объекта формы, я получаю белый экран смерти, содержащий только «formtestAction: ENTERED» (из эха)оператор сверху.)

Я медленно схожу с ума.

Я не могу понять, это проблема автозагрузчика, проблема маршрутизации, проблема создания объекта или что-то подобное.

Буду очень признателен за любые советы.

Спасибо за чтение.

Ответы [ 2 ]

1 голос
/ 10 декабря 2010

С Zends я сталкивался с этим несколько раз, и это обычно что-то раздражающее как лишняя запятая.В

... 'basePath' => APPLICATION_PATH.'/ modules / MYAPPNAME',));

это похоже на один из них.Только быстрый взгляд, но вы все равно можете это проверить.

HTH, Маркус

0 голосов
/ 10 декабря 2010

мтэппер: очень близко. Хороший улов!

Это действительно была лишняя запятая, только в определении класса Form - предотвращение успешной реализации объекта.

Эти тихие сбои ОЧЕНЬ раздражают.

...