2017-06-26 5 views
1

今日私は全く変わった動作を見つけました。CakePhp2検索フォームがプライマリキーの検索時にポストからポストに切り替わります

私はCakePhp 2.9を使用しており、注文書を検索するための検索フォームを持っています。モデルの主キーは他のモデルとの関係からsession_idです。私はタイプのポストの要求であることに応じて異なることを行うコントローラで

<form id="OrderSearchForm" action="/orders/search" method="post" accept-charset="utf-8"> 

class Order extends AppModel 
{  
    public $primaryKey = 'session_id'; 

は、私は、次のHTMLになり

<?php echo $this->Form->create(
     'Order', 
     array(
      'url' => array('controller' => 'orders', 'action' => 'search') 
     ) 
    ); ?> 

と私の検索フォームを開きますか否か。だから、限り、私は私の注文のsession_idの以外の値を検索したり、他の検索はすべてがうまくている値とのsession_idを組み合わせたよう

if ($this->request->is('post')) { 
     debug('post'); 
    } else if ($this->request->is('get')) { 
     debug('get'); 
    } else { 
     debug($_REQUEST); 
     debug($_GET); 
     debug($_POST); 
    } 

: は奇妙な行動をデバッグするために私は、コントローラで次のデバッグ行を追加しました。 しかし、すぐに、私はsession_idのための唯一の検索と検索フォーム用に生成されたHTMLは

<form id="OrderSearchForm" action="/orders/search/mysearchvaluesessionidstring" method="post" accept-charset="utf-8"> 

に変更され、私はそれが突然、もはや「ポスト」と考えられている私のフォームを送信するとき。 $ _GETのデバッグ出力はまだ空ですが、$ _POSTのデバッグ出力はまだ入力されていますが、if($ this-> request->( 'post'))の条件はもう起動しません。

どのようにこの動作を変更できますか?

答えて

1

リクエストデータにセッションIDのみが含まれている場合、ケーキがリクエストタイプをPUTに変更している可能性があります。 POSTリクエストをチェックするのではなく、if ($this->request->is(array('post', 'put')))にチェックすることで回避できます。

これはなぜ起こっているのかもしれないの詳細について読むことができますhere

関連する問題