过滤CakePHP中的参数

时间:2015-02-14 19:26:21

标签: cakephp parameters cakephp-2.6

在Rails中,we can指定在保存数据时在控制器中使用的允许参数。因此,如果params是提交的数据,我可以这样做:

params.require(:person).permit(:name, :age)

这将确保:person密钥存在,并会过滤掉任何不是某人:name:age的内容。

CakePHP中有没有办法实现这个目标?

编辑:我知道我可以编写PHP,我想知道是否有一个Cake组件/插件已经完成了。

3 个答案:

答案 0 :(得分:2)

这种PHP方式的东西:

// submited data
$this->request->data['Person'] = array(
   'name' => 'Salines',
   'age' => '41',
   'job' => 'Web Developer'
);

// check if isset and filter out anything that is not a person's name or age

if(isset($this->request->data['Person']))
{
    $permit = array('name' => '','age' => '');
    $this->request->data['Person'] = array_intersect_key($this->request->data['Person'],$permit);
}

//and return $this->request->data like 
array(
   'Person' => array(
       'name' => 'Salines',
       'age' => '41'
   )
);

答案 1 :(得分:1)

  

我正在寻找Cake提供的解决方案(如果有的话)

好吧,定义" cake-provided",你的意思是框架本身?不,核心没有这个功能,但有两个插件。

对于Cake3,我会选择Plum-Search,它由与另一个插件的初始代码相同的人编写,但是完全重写并更好地使用Cake3。

下次你提出确切的蛋糕版名称。

两个插件都实现了PRG模式,但没有明确允许或拒绝查询参数。他们只会获取您在过滤器声明中指定的参数并将其转换为请求。验证并保存以排除不需要的字段。

答案 2 :(得分:-1)

制作这样的网址链接

echo $this->Html->url(array('controller'=>'users','action'=>'hello','par1'=>23,'par2'=>'sud'));

用户控制器中的hello函数

pr($this->params->named['par1']); 
pr($this->params->named['par2']);