当它成为hasMany关联的一部分时,如何“解锁” CakePHP表单中的字段 - php

我有一个表示我们数据库中RewardModifier表的表格。那个RewardModifier hasMany RewardOption

我的表单的结构如下图所示:

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

问题

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

现在,我之前一直使用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控制器添加(相当于)此功能可达到以下目的:

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

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

php:拆分字符串,直到第一次出现数字 - php

我有像cream 100G sup 5mg Children 我想在第一次出现数字之前将其拆分。所以结果应该是array( array('cream','100G'), array('sup','5mg Children') ); 可以告诉我如何为此创建图案吗?我试过了list(…

php getdate()-小时不正确 - php

我在iframe中将php用于计数器。我正在使用getdate();功能。我的当地时间不是下午12:16,如果我使用getdate();从php获取现在的本地时间,小时显示为13。我从php getdate()回答的值应该不是12吗?$d1=getdate(); $hournew=$d1['hours']; echo $hournew .…