我在视图中有一个简单的表单,我正在尝试访问 $this=>passedArgs 但它返回为空。
我实际上正在尝试使用 cakeDC 搜索插件,该插件使用 $this=>passedArgs。从表单提交中获取结果一定是我没有做过的简单事情。
查找视图
<?php
echo $this->Form->create('Member', array(
'url' => array_merge(array('action' => 'find'), $this->params['pass'])
));
echo $this->Form->input('name', array('div' => false));
echo $this->Form->submit(__('Search'), array('div' => false));
echo $this->Form->end();
?>
控制器
public function find() {
debug($this->passedArgs);
exit;
}
我已经尝试过 $this->request->params
array(
'plugin' => null,
'controller' => 'members',
'action' => 'find',
'named' => array(),
'pass' => array(),
'isAjax' => false
)
我有添加方法获取表单。 这个问题之前已经被问过,但是他们的解决方案是在 public $uses = array('order', 'product'); 中使用小写字母。当它应该是 public $uses = array('Order', 'Product');没有用。
Cakephp版本2.3.5
感谢您的帮助
更新:
我已将表单设置为方法 get,这是网址:
http://localhost/loyalty/members/find?name=searchtext
我已经删除了插件,但我仍然没有得到任何 $this->passedArgs,但我现在得到了 $this->request->data['name'] 的数据。一旦我把 public $components = array('Search.Prg');我再次注意到 $this->request->data['name']。
我再次尝试使用搜索插件 $this->Prg->parsedParams() ,我只得到 array()
文档对此非常清楚。 您不能只调试尚未设置的内容。 因此,包括插件本身(及其组件)是不够的。
来自自述文件/文档:
public function find() {
$this->Prg->commonProcess();
$this->paginate['conditions'] = $this->ModelName->parseCriteria($this->passedArgs);
$this->set('...', $this->paginate());
}
注意 commonProcess() 调用,它只会使 PassedArgs 包含您需要的内容。