0

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

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

这将确保:person密钥存在,并将过滤掉任何不是人的:name:age.

CakePHP 有什么方法可以做到这一点吗?

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

4

3 回答 3

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'
   )
);
于 2015-02-14T21:17:32.430 回答
1

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

好吧,定义“蛋糕提供”,你的意思是框架本身?不,核心没有此功能,但有两个插件。

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

下次你问你确切的蛋糕版本时。

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

于 2015-02-15T11:06:10.613 回答
-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']);
于 2015-04-08T05:51:06.890 回答