在Rails中,we can指定在保存数据时在控制器中使用的允许参数。因此,如果params
是提交的数据,我可以这样做:
params.require(:person).permit(:name, :age)
这将确保:person
密钥存在,并会过滤掉任何不是某人:name
或:age
的内容。
CakePHP中有没有办法实现这个目标?
编辑:我知道我可以编写PHP,我想知道是否有一个Cake组件/插件已经完成了。
答案 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']);