在_get提交后,CakePHP表单输入字段为空

时间:2013-01-12 03:08:30

标签: cakephp input get

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';
}
  

Controller(DriversController.php):

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

2 个答案:

答案 0 :(得分: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');
        }
    }
}

以上信息可以更详细地阅读here

答案 1 :(得分:-1)

您可以通过分配$ this->数据来设置表单值。

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