2012-03-31 6 views
0

Wir (das gesamte Team) ziehen seit 2 Tagen Haare über dieses Problem. Aus irgendeinem seltsamen Grund wird unser Zend Framework 1.11.2 es uns nicht erlauben, einfache Formulare in den Controller zu schreiben, wenn wir keine Zend_Form-Klasse erstellen.Formular wird nicht ohne ZEND_Form POST

HTML in View-Datei (kein Javascript, nichts):

<html><body> 
<form action="/index/login/" method="post">    
    Email: <input type="text" name="email"/><br /> 
    Password: <input type="password" name="password" /> 
    <p><input type=submit name="ac" class="btn btn-success" value="Login"></p> 
    </form></body></html> 

Index Controller:

public function loginAction() 
{ 
    $request = $this->getRequest(); 
    if ($request->getParam('email')) { 
     Zend_Debug::dump($request); 
    } 
} 

$ request-> getParams() ist leer!

Aber wenn wir ein Zend_Form erstellen oder die Felder in als GET übergeben, dann ist $ request-> getParams() mit Daten gefüllt.

Ich verstehe es einfach nicht. Gibt es in Zend etwas, das du deaktivieren musst, um die normale Form zu verwenden? Wir denken, wir haben alles versucht, auf die globalen Variablen $ _POST und $ _REQUEST zugegriffen und $ request-> getPost() aufgerufen. Alles leer, es sei denn, wir erstellen eine Zend_Form-Klasse und instanziieren sie innerhalb des Controllers.

+0

Das ist seltsam. Es sollte kein Problem sein. Haben Sie versucht, eine einfache ZF-App einzurichten, um zu sehen, ob Sie einen Beitrag machen können? Ansonsten würde ich überprüfen, ob Zend_Controller_Plugins eine Verarbeitung im Predispatch-Hook durchführt. – Gohn67

+0

Es ist lustig, wie viele Probleme wir lösen können, wenn wir einen interaktiven Debugger verwenden. Wenn Sie sich die Art Ihres Problems ansehen, bin ich mir ziemlich sicher, dass weder Sie noch Ihr Team die Angewohnheit haben, Debugger zu verwenden. Habe ich recht? = P Ich meinte, nicht Zend_Debug :: dump(), aber Xdebug oder Zend Debugger ... –

+0

Wir gehen durch den Debugger. Wir verwenden Xdebug und Eclipse PDT. Nichts - Nada. Leeren Sie $ _POST. Der Debug-Dump ist nur für den Fall, dass wir über etwas hinweggegangen sind. :( Schlichte, frische ZF App funktioniert ganz gut. Wir wollen nur auf den Grund davon gehen, falls es etwas ist, was wir mit Zend_Form vermisst haben. – cfoo

Antwort

0

Sieht aus wie ein Problem mit Ihrer Formularaktion. Bitte verwenden Sie "baseUrl" View Helper oder URL anzeigen Helper richtige Aktion URL zu erstellen:

<?php 
// correct action url 

$actionURL = $this->url(array(
    'controller' => 'index', 
    'action'  => 'login', 
    'module'  => 'default', 
)); 

?> 

<html> 
    <body> 
     <form action="<?php echo $actionURL; ?>" method="post">    
      Email: <input type="text" name="email"/><br /> 
      Password: <input type="password" name="password" /> 
      <p><input type=submit name="ac" class="btn btn-success" value="Login"></p> 
     </form> 
    </body> 

+0

Der View-Helfer hilft Ihnen beim Organisieren/Formatieren Ihrer URL. Die $ actionURL gibt dir/index/login - wie zuvor. Ich habe Ihrem Vorschlag einen Versuch gegeben, nur für den Fall, dass es etwas mehr als nur eine schicke URL ist. Immer noch kein Glück. – cfoo

+0

hum URL Helper altough fügt die vollständige "URL"/Index/Login-Ergebnisse nur in http: // localhost/index/login – opHASnoNAME

0

... in die Felder passieren, wie GET dann Anfrage- $> getParams() ist gefüllt mit Daten.

Da Sie einen Formularpost erstellen, müssen Sie die Methode getPost() verwenden.

public function loginAction() 
{ 
    if ($email = $this->_request->getPost('email')) { 
     Zend_Debug::dump($email); 
    } 
} 
+0

Versucht, dass. $ Anfrage-> getPost(). – cfoo

+0

Würde es Ihnen etwas ausmachen, Ihre Formularklasse zu posten? –

+0

'getRequest()' wird sowohl auf GET- als auch auf POST-Parameter zugreifen, aber ich bevorzuge die Verwendung von 'getPost', da dies verhindert, dass der Benutzer bestimmte Parameter leicht in die URL einfügt. – drew010

0

Inbetriebnahme die neueste Version

Zend Framework 1.11.11

Dann versuchen Sie diesen Code innerhalb loginaction

if($this->getRequest()->isPost()) 
{ 
print_r($this->_getAllParams()); 
}