php - 当它是 hasMany 关联的一部分时,如何将 CakePHP 表单中的字段设为 'unlock'

标签 php forms cakephp cakephp-2.0 has-many

我有一个表单,表示我们数据库中的一个 RewardModifier 表。 RewardModifier hasMany RewardOption.

我的表单结构如下(图片):

enter image description here

因此,RewardModifier 可以在页面上有很多元素,每个元素都有很多 RewardOption 项。

问题

问题是,用户可以使用 Javascript 删除此表单的部分,这实际上是将其从 DOM 中删除。当他们这样做时,它会破坏安全组件,因为 POST 字段与生成页面时提供的 token 不匹配。

现在,我之前一直在使用 unlockedFields 来处理这个问题:

$this->Security->disabledFields = array(
   'PrjRewardModifier.reward_id',
   'PrjRewardModifier.title',
   'PrjRewardModifier.option_type',
   'PrjRewardOption.description',
   'PrjRewardOption.modifier',
   'PrjRewardOption.amount'
);

我知道 disabledFields 已被弃用,但我们目前正在使用它。

当我在 SecurityComponent 中调试已发布的表单数据时,我看到以下内容:

(int) 8 => 'PrjRewardModifier.0.reward_id',
(int) 9 => 'PrjRewardModifier.0.title',
(int) 10 => 'PrjRewardModifier.0.option_type',
(int) 11 => 'PrjRewardModifier.0.PrjRewardOption.0.description',
(int) 12 => 'PrjRewardModifier.0.PrjRewardOption.0.modifier',
(int) 13 => 'PrjRewardModifier.0.PrjRewardOption.0.amount'

我需要知道如何编辑传递给 unlockedFields 的数据,以便它可以忽略这些为 hasMany 关系键入的字段。

谢谢。

最佳答案

我遇到了类似的问题。我发现将它添加(等价于)到 RewardModifier Controller 中可以达到目的:

public function beforeFilter(){
     $this->Security->unlockedFields = array('RewardOption');
}

关于php - 当它是 hasMany 关联的一部分时,如何将 CakePHP 表单中的字段设为 'unlock',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15938555/

相关文章:

php - Symfony2 双嵌套动态表单字段

javascript - 如何更改表单中标签的颜色?

php - 在哪里创建以及如何调用 View 中的函数——cakephp

php - MySQL 匹配搜索中的比较运算符

php - 在某些条件下动态更改 WP_Error 消息 CSS?

javascript - Angular 验证显示提交时的所有错误

php - CakePHP 分页排序包含数据

cakephp - cakephp添加输入错误 Controller

php - Javascript 将变量传递给 PHP

php - 使电话号码加粗的正则表达式-并非总是有效