cakephp passArgs 为空

问题描述 投票:0回答:1

我在视图中有一个简单的表单,我正在尝试访问 $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()

php cakephp cakephp-2.0
1个回答
1
投票

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

来自自述文件/文档:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.