我在一个视图中有一个简单的表单,我正在尝试访问$ 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-&gt; request-&gt; params
array(
'plugin' => null,
'controller' => 'members',
'action' => 'find',
'named' => array(),
'pass' => array(),
'isAjax' => false
)
我有添加方法get到表单。 之前已经问过这个问题,但他们解决了在公共场合使用较少的案例$ uses = array('order','product');什么时候应该是public $ uses = array('Order','Product');没用。
Cakephp版本2.3.5
感谢您的帮助
更新
我已将表单设置为方法get,这是url:
http://localhost/loyalty/members/find?name=searchtext
我已删除该插件,但仍然没有得到任何$ this-&gt; passedArgs,但我现在获取$ this-&gt; request-&gt; data ['name']的数据。一旦我把public $ components = array('Search.Prg');我再次注意到$ this-&gt; request-&gt; data ['name']。
我再次尝试使用Search插件获取$ this-&gt; Prg-&gt; parsedParams(),我只是得到了array()
答案 0 :(得分:1)
文档很清楚。 你不能只调试尚未设置的东西。 因此,包含插件本身(及其组件)是不够的。
来自自述文件:
public function find() {
$this->Prg->commonProcess();
$this->paginate['conditions'] = $this->ModelName->parseCriteria($this->passedArgs);
$this->set('...', $this->paginate());
}
注意commonProcess()调用,它只会使passArgs包含你需要的东西。