加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在CakePHP表单中禁用使用安全组件和jQuery的输入元素

发布时间:2020-12-13 22:08:44 所属栏目:PHP教程 来源:网络整理
导读:我在Cake PHP中有一个表单,它有两个实时搜索文本输入.当用户选择结果时,它们中的每一个都更新隐藏字段的值.该模型称为Record,涉及的属性是 budget_id program_id concept_id 我以这种方式使用FormHelper创建了一个表单: ...?php echo $this-Form-create('Re
我在Cake PHP中有一个表单,它有两个实时搜索文本输入.当用户选择结果时,它们中的每一个都更新隐藏字段的值.该模型称为Record,涉及的属性是

> budget_id
> program_id
> concept_id

我以这种方式使用FormHelper创建了一个表单:

...
<?php echo $this->Form->create('Record') ?>
<h1>Create a record</h1>

<?php echo $this->Form->hidden('Record.budget_id',array('value' => $budget['Budget']['id'])) ?>

<?php echo $this->Form->hidden('Record.program_id') ?>
<?php echo $this->Form->input('Record.program_id_search',array(...)) ?>

<?php echo $this->Form->hidden('Record.concept_id') ?>
<?php echo $this->Form->input('Record.concept_id_search',array(...)) ?>

<?php echo $this->Form->submit('Send') ?>
<?php echo $this->Form->end(); ?>
...

如您所见,隐藏了存储模型属性的输入字段.实时搜索框配置了jQuery的自动完成插件.

遵循CakePHP手册建议我已经禁用了beforeFilter方法中的两个额外字段,因此安全组件忽略它们并且表单通过验证:

public function beforeFilter() {
  $this->Security->disabledFields = array(
    'Record.program_id_search','Record.concept_id_search',);
}

每当我从Javascript更改隐藏输入的值时,CakePHP似乎都会生气,它会将我发送到blackhole方法.根据文档,这没关系.

但令我惊讶的是,安全组件一直忽略我的disabledFields设置.

我一直在搜索几个网络资源,每个人都指向disabledFields选项.但它对我不起作用.

有什么建议?

谢谢!!

UPDATE

我找到了一个解决方法,但它真的很难看.我已使用常规选择字段替换隐藏的输入字段,但将CSS显示属性设置为none.

这样,安全组件不再抱怨,并且用户不断查看几个实时搜索框.

我不明白为什么用Javascript改变一个选择它没关系,但不改变隐藏的输入.

解决方法

之所以发生这种情况,是因为安全组件锁定了隐藏字段,不仅保存了哈希的名称,还保存了它们的值.因此,当您更改其值时,您将使整个表单无效.唯一的解决方案是将这些字段从隐藏字段切换到普通字段,包含在display:none; DIV.

另一种方法是禁用对该字段的检查,但是您发布的代码不是正确的方法.您应该在组件配置期间指定字段,如下所示:

var $components = array('Security' => array(
    'blackHoleCallback' => 'callback','requireAuth' => array('action1','action2'),'allowedControllers' => array('controller'),'allowedActions' => array('action1','disabledFields' => array('Record.program_id_search','Record.concept_id_search')
    )
);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读