-1
echo $this->Form->create('Driver', array('type' => 'get'));
echo $this->Form->input('name');
echo $this->Form->end('Search');

結果として $this->request:

query => array(
    'name' => 'some name'
)

問題は検索後に入力フォームが空であることですが、$this->request->query['name'] = 'some name'
フォームを元に戻すとすべてが期待どおりに機能しますpost

編集。モデルとコントローラーが含まれています。テストには、クリーン インストールを使用します。モデル (Driver.php):

App::uses('AppModel', 'Model');
class Driver extends AppModel {
  public $displayField = 'name';
}

コントローラー (DriversController.php):

App::uses('AppController', 'Controller');
class DriversController extends AppController {
    public function index() {
        $drivers = $this->Driver->find('all');
        $this->set(compact('drivers'));
    }
}
4

2 に答える 2

0

コントローラーのコードでは、送信されたフォームの値にアクセスしようとしている場所が表示されないため、移動するための一般的な情報を提供しようとします。

フォーム データにアクセスするには、使用リクエストを冷却する必要があります。何が起こっているかを正確に確認するには、コントローラーに次のいずれかを入力します...

print_r($this->request->data);

また

print_r($this->request);

どちらも CakePHP に登録されたデータを表示します。

モデルを使用してこの保存を保存する場合。使用する...

$this->Driver->save($this->request->data)

ただし、最初に投稿であることを確認することをお勧めします..コードを完成させましょう...

public function submit() {
    if ($this->request->is('post')) {
        $this->Driver->create();
        if ($this->Driver->save($this->request->data)) {
            $this->Session->setFlash('Saved.');
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash('FAILED');
        }
    }
}

上記の情報は、こちらでさらに詳しく読むことができます。

于 2013-01-12T13:07:37.130 に答える
-1

$this->data に代入することで、フォームの値を設定できます。

$this->data = $this->request->query; 
于 2013-01-12T04:20:39.750 に答える