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

2024-01-06

我在 CakePHP 中有一个表单,它有两个实时搜索文本输入。当用户选择结果时,它们中的每一个都会更新隐藏字段的值。该模型称为Record,涉及的属性有

  • budget_id
  • program_id
  • concept_id

我创建了一个表格使用表单助手这样:

...
<?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 似乎就会生气,并将我发送到黑洞方法。根据文档,这是可以的。

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

我一直在几个网络资源中搜索,每个人都指出disabledFields选项。但这对我不起作用。

有什么建议么?

Thanks!!

UPDATE

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

这样,安全组件就不会再抱怨,并且用户会继续查看几个实时搜索框。

我不明白为什么用 Javascript 更改选择可以,但更改隐藏输入不行。


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

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

var $components = array('Security' => array(
    'blackHoleCallback' => 'callback',
    'requireAuth' => array('action1', 'action2'),
    'allowedControllers' => array('controller'),
    'allowedActions' => array('action1', 'action2'),
    'disabledFields' => array('Record.program_id_search', 'Record.concept_id_search')
    )
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用使用安全组件和 jQuery 的 CakePHP 表单中的输入元素 的相关文章

  • onclick链接/按钮获取数据属性值

    span class btn btn block btn inverse btn icon glyphicons home i i Daily span span class btn btn block btn inverse btn ic
  • Java 1.7.51 小程序的互联网限制

    在之前的几个月里 我为一个学术项目开发了一个沙箱 Java 小程序 由于预算有限 我无法与值得信赖的证书颁发机构签署它 随着 Java 1 7 51 的发布 我发现新的安全限制禁止执行小程序 因为缺少签名 到目前为止 我已经找到了解决这个问
  • Mousedown 事件与 ipad/iphone 的兼容性? - jQuery 移动

    我用jquery写了一个小卷轴 卷轴似乎在 PC 和 Mac 上都能完美运行 但它不适用于触摸设备 我想这是由于mousedown被调用的属性 如何在 PC 和触摸屏设备上实现此功能 Thanks scroll nav up scroll
  • 删除移动设备上的 adsense

    我正在研究响应式设计 但在使用 adsense 时遇到了问题 我有一个广告应该显示在桌面设计上 但不能显示在移动设计上 因此 只有在桌面上查看网站时 才应将广告代码放置在 html 中 css 可以使用 display none 但这违反了
  • 比在配置文件中以纯文本形式存储 mysql 密码更好的方法吗?

    许多 PHP 程序要求用户将 mysql 密码以纯文本 字符串或常量 形式存储在应用程序根目录的配置文件中 这一直困扰着我 这么多年过去了 还有更好的方法吗 到目前为止 我已经提出了两个最小的安全提升方案 使用 htaccess 中的规则使
  • jQuery:array[i].children() 不是函数

    以下代码的灵感来自http ignorethecode net blog 2010 04 20 footnotes http ignorethecode net blog 2010 04 20 footnotes 当您将光标移到脚注符号上时
  • 如果鼠标不移动,JQuery 隐藏鼠标

    如果鼠标一段时间没有移动 我会尝试隐藏鼠标 这是我正在使用的代码 document ready function var j document mousemove function clearTimeout j html css curso
  • 按住鼠标可以更快地增加值[重复]

    这个问题在这里已经有答案了 我有这个脚本 每次单击按钮时都会将值加 1
  • 我希望根据当前路线将多个变量切换为 true 或 false

    我希望根据当前路由将多个变量切换为 true 或 false 控制器在页面加载时检查该路由 VpcYeoman SuperTableController Ember ArrayController extend routedToLocati
  • jqGrid tableToGrid“选项”参数

    Basics 大家好 我看到 tableToGrid 方法 由 Peter Romianowski 定义为tableToGrid selector options 在 jqGrid wiki 上 但找不到任何有相关文档的地方options
  • 使用 Strope 库传输 XMPP 文件

    谁能告诉我使用 strope 在 XMPP 中实现文件传输 图书馆 我建议使用XEP 0065 SOCKS5 字节流 http xmpp org extensions xep 0065 html恐怕你需要自己编码
  • 验证多个同名字段

    我有一个如下所示的视图文件 我的问题是 如何验证这些数据 我没有保存 所以
  • PouchDB / CouchDB 的每个文档用户访问控制

    我希望使用 PouchDB CouchDB 来保存我的 Web 应用程序的用户数据 但找不到控制每个用户访问权限的方法 我的数据库仅由使用用户 ID 作为密钥的文档组成 我知道有一些解决方案 每个用户一个数据库 但是它需要监视每当新用户想要
  • DataTable 不是 DataTables JQuery 库的函数错误

    我有一个使用 Datatable 库的简单示例 我让它与 JSFiddle 一起工作 http jsfiddle net 3hhn7y7f http jsfiddle net 3hhn7y7f 但是当我尝试使用实际文件执行此操作时 出现以下
  • WCF 错误:调用者未经服务验证

    我正在尝试从客户端控制台应用程序访问服务器上的 WCF 服务进行测试 我收到以下错误 调用者未经身份验证 服务 我在用wsHttpBinding 我不确定该服务需要什么样的身份验证
  • 如何使用 jQuery 查找和替换 HTML 实体?

    我使用 HTML 表格为 Drupal 站点构建了一个日历模板 并且使用 jQuery 向每个空单元格添加了一个 无文本 类 table calendar td empty addClass no text 这很好用 但我的问题是 CMS
  • Bootstrap 3 +backbonejs - 切换导航未打开

    我在我的项目中使用 jquery backbonejs underscorejs 和 bootstrap 3 https izify com https izify com 这是我的源代码https github com datomnurd
  • 如何使用 PopUp 插件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我尝试搜索插件 jquery 来创建评论弹出窗口 但我不知道如何使用它以及支持 Popup 的插件是什么 任何人都可以帮我展示简单的代码并
  • 使用 jquery gmap3 和 autoFit 设置最大缩放级别

    我在 gmap3 插件上使用 autoFit 因此它可以缩放到地图上对象的最佳级别 问题是 当只有 1 个对象时 它会放大到太远的最大级别 我怎样才能使它的缩放级别不超过 14 级 Thanks 您可以使用 maxZoom 但这设置了地图的
  • jquery 事件未使用 webpacker 和 Coffeescript 触发

    尝试从头开始构建新的 Rails 6 应用程序来替换 Rails 5 2 应用程序 尝试将 webpacker 与基础站点 jquery 和 Coffeescript 一起使用 经过一番搜索后 我已经用 webpacker 加载了所有内容

随机推荐