2010-12-05 3 views
0

Zend newbie пытается настроить и использовать Zend_Form.Ошибка создания экземпляра формы Zend в белом экране смерти

Только для записи Я нахожусь в 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/форм/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: Вступил» (. От эха заявления в верхней части)

Я иду медленно с умом.

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

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

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

+0

Вы проверили свои журналы PHP? Если вы столкнулись с некоторой фатальной ошибкой PHP, вы, скорее всего, получите пустой экран. Кроме того, фатальные ошибки не приземляются в вашем журнале приложений (как это делают нечеткие исключения), они перейдут прямо в журнал PHP. – Vika 2010-12-06 15:58:03

ответ

1

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

... 'basePath' => APPLICATION_PATH. '/ Модули/MYAPPNAME',));

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

НТН, Маркус

+0

вы могли бы принять мое сообщение как ответ (для нашей внутренней репутации);) С уважением, – 2010-12-17 13:37:54

0

mtoepper: Очень близко. Хороший улов!

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

Эти молчащие сбои ОЧЕНЬ раздражают.