2010-12-05 2 views
0

Zend débutant en essayant de configurer et d'utiliser Zend_Form. Pour l'enregistrement, je suis sur Zend Framework Version: 1.11.1 sur Win XP exécutant Apache 2.quelque chose. Je travaille sur un site qui, pour la plupart, fonctionne très bien. (Quelqu'un d'autre a commencé, je dois l'étendre). Je rencontre des problèmes dans le domaine des formulaires et j'essaie d'introduire Zend_Form dans l'espoir que cela simplifiera quelque peu les choses. Mais essayer d'utiliser Zend_Form pose des problèmes. Lorsque j'essaie d'instancier le premier formulaire de test, j'obtiens l'écran blanc de la mort - sans même un message d'erreur.Zend Form instanciation échouant silencieusement dans l'écran blanc de la mort

données comme suit:

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

Bootstrap.php contient:

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'))); 
} 

Cela fonctionne très bien pour les modèles avec des noms tels que:

class MYAPPNAME_Model_DataRecordName extends Doctrine_Record 
{ 
etc... 

Mais il semble échouer lamentablement pour les formulaires ... bien que ce soit le cas, c'est mon premier passage à l'utilisation de Zend_Form.

Ma forme est définie dans le fichier MYAPPNAME/formes/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 

Le formulaire est affiché dans une vue définie comme:

<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> 

La vue fonctionne très bien.

Il est géré par une action (dans un contrôleur de travail) défini comme:

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"; 
} 

Si je commente à la fois la forme instanciation et les lignes de données d'ordures, j'obtenir une sortie valide dans la vue. Si je mets $ form à "GARBAGE DATA", j'obtiens aussi une sortie prévisible valide.

Cependant, lorsque je tente d'instancier l'objet formulaire je reçois l'écran blanc de la mort ne contenant que « formtestAction: ENTRÉ » (. De l'instruction echo en haut)

Je vais lentement fou.

Je n'arrive pas à déterminer s'il s'agit d'un problème de chargement automatique, de problème de routage, de problème d'instanciation d'objet ou quoi.

Je serais très obligé pour tout conseil.

Merci d'avoir lu.

+0

Avez-vous vérifié vos logs PHP? Si vous rencontrez une erreur fatale PHP, vous risquez de vous retrouver avec un écran vide. De plus, les erreurs fatales ne se poseront pas dans votre journal d'application (comme le font les exceptions non interceptées), elles iront directement dans le journal PHP. – Vika

Répondre

1

Avec Zends, je l'ai rencontré plusieurs fois, et c'est habituellement quelque chose d'énervant comme une virgule superflue. Dans

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

il ressemble à l'un d'entre eux. Seulement un coup d'oeil rapide, mais vous pourriez le vérifier quand même.

HTH, Marcus

+0

pourriez-vous accepter mon poste comme réponse (pour notre réputation interne);) Cordialement, –

0

mtoepper: Très proche. Bonne prise!

Il s'agissait en effet d'une virgule supplémentaire, uniquement dans la définition de la classe Form - empêchant l'instanciation réussie de l'objet.

Ces échecs silencieux sont très ennuyants.

Questions connexes