4

検索フォームがあり、GET メソッドを使用して送信しています。フォームの送信後、送信された値をフォームに事前入力する必要があります。POST の場合、cake はこれを自動的に処理しますが、GET では機能しません。Cakephp のフォーム ヘルパーを使用して、フォームとフォーム コントロールを作成しました。各フィールドを手動で設定する代わりに、フィールドを事前に入力する簡単な方法はありますか? 私はcakephp2.xを使用しています

4

3 に答える 3

6

この質問が少し前に出されたことは知っていますが、最近同じ問題が発生しました。

GET を使用すると、プロパティCakeRequestは埋められません。CakeRequest::dataフォーム ヘルパーは通常、このプロパティを使用して入力の値を入力します。そのため、最初にこのプロパティをコントローラーのどこかにある GET データで埋める必要があります。例えば:

$this->request->data = $this->request->query;

次の問題は、GET を使用すると、フォームに設定したモデルがフォーム ヘルパーによって無視されることです。残念ながら、この動作は文書化されていませんが、次のことについて言及しています

falseで渡すこともできます$model。これにより、フォーム データが配列: $this->request->data(サブ配列: ではなく) に配置されます$this->request->data['Model']。これは、データベース内の何も表さない短い形式の場合に便利です。

falseそのため、検索フォームを作成するときにモデルを設定する必要があります。例えば:

echo $this->Form->create(false, array('type' => 'get'));
于 2013-02-13T04:05:06.037 に答える
0

CakePHP 3 の場合、次のようにフォームを簡単に作成できます。

echo $this->Form->create($user);

コントローラーのアクションでは、$user を Entity として設定するだけです

$user = $this->Users->get($id);
于 2016-03-31T02:43:44.947 に答える
-1

これを行う$this->request->dataには、コントローラーにプロパティを設定します。

たとえば、これをフォームとして持っているとしましょう:

 <?= $this->Form->create('Search'); ?>
 <?= $this->Form->input('query'); ?>
 <?= $this->Form->end(); ?>

次に、コントローラーアクションで次を使用します。

 $this->request->data('Search.query', 'search data');
于 2012-11-07T08:06:23.933 に答える