0

我在 aa 视图中有一个简单的表单,我正在尝试访问 $this=>passedArgs 但它返回为空。

我实际上正在尝试使用使用 $this=>passedArgs 的 cakeDC 搜索插件。从表单提交中获取结果一定是我没有做过的简单事情。

查找视图

<?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
)

我已将方法添加到表单中。这个问题之前已经被问过,但是他们在公共 $uses = array('order', 'product'); 中使用小写的解决方案;什么时候应该公开 $uses = array('Order', 'Product'); 不工作。

Cakephp 2.3.5 版

谢谢你的帮助

更新:

我已将表单设置为方法 get,这是 url:

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()

4

1 回答 1

1

文档对此非常清楚。您不能只调试尚未设置的内容。所以包括插件本身(及其组件)是不够的。

从自述文件/文档中:

public function find() {
    $this->Prg->commonProcess();
    $this->paginate['conditions'] = $this->ModelName->parseCriteria($this->passedArgs);
    $this->set('...', $this->paginate());
}

请注意 commonProcess() 调用,它只会使 passArgs 包含您需要的内容。

于 2013-05-20T11:57:59.263 回答