2012-03-31 8 views
0

私たち(チーム全体)はこの問題を最後の2日間解決しています。いくつかの奇妙な理由により、Zend Framework 1.11.2では、Zend_Formクラスを作成しない限り、プレーンフォームをコントローラに投稿することはできません。ビューファイルでフォームはZend_FormなしでPOSTしません

HTML(なしジャバスクリプト、何もない):

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

インデックスコントローラー:

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

$要求 - >のgetParams()が空であります!

しかし、Zend_Formを作成したり、GETとしてフィールドを渡したりすると、$ request-> getParams()はデータで埋められます。

私はただそれを取得しません。あなたは普通の形を使うためにオフにしなければならないものがZendにありますか? $ _POST変数と$ _REQUEST変数にアクセスし、$ request-> getPost()を呼び出すことですべてを試したと思います。 Zend_Formクラスを作成してコントローラ内でインスタンス化しない限り、すべて空です。

+0

の内側にこのコードを試してみてください。それは問題ではありません。あなたはポストをすることができるかどうかを見るためにプレーンZFアプリを設定しようとしましたか?それ以外の場合は、Zend_Controller_Pluginsがプリディスパッチフックで処理を行っているかどうかを確認します。 – Gohn67

+0

対話型デバッガを使用しているときに解決できる問題は面白いです。あなたの問題の性質を見ると、あなたとあなたのチームのどちらも、デバッガを使用する習慣がないと確信しています。私は正しい? = P私は、Zend_Debug :: dump()ではなく、XdebugまたはZend Debuggerを意味します... –

+0

デバッガをステップ実行します。 XdebugとEclipse PDTを使用しています。 Nothing - Nada。空の$ _POST。デバッグダンプは、我々が何かを踏んだ場合のためのものです。 : プレーンな新鮮なZFアプリケーションはうまくいきます。Zend_Formで見逃したことがある場合に備えて、ちょうどその底に行きたいです。 – cfoo

答えて

0

フォームアクションの問題のようです。 ()としてGETその後、$要求 - >のgetParamsのフィールドを渡す...

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

ビューヘルパーは、URLの整理/書式設定を支援します。 $ actionURLはあなたに/ index/loginを与えます - 以前と同じです。私はあなたの提案を、それが素晴らしいURLよりも何かをやっている場合に備えて試してみました。まだ運がありません。 – cfoo

+0

ハムurlヘルパーaltoughはhttp:// localhost/index/loginにある "url"/index/loginの完全な結果を追加します – opHASnoNAME

0

で満たされている:正しいアクションURLを作成するには、 "baseUrlに" ビューヘルパーまたはURLビューヘルパーを使用してくださいデータ。

フォーム投稿を作成しているので、getPost()メソッドを使用する必要があります。

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

それを試してみました。 $ request-> getPost()。 – cfoo

+0

フォームクラスを投稿してもよろしいですか? –

+0

'getRequest()'はGETとPOSTの両方のパラメータにアクセスしますが、ユーザがURLに特定のパラメータを簡単に挿入できないようにするため、 'getPost'を使用する方が好きです。 – drew010

0

まず使用最新バージョン

Zend Frameworkには、1.11.11

が続いLoginActionの

奇妙だ
if($this->getRequest()->isPost()) 
{ 
print_r($this->_getAllParams()); 
} 
関連する問題