【问题标题】:cakephp form input with no name attribute没有名称属性的cakephp表单输入
【发布时间】:2013-01-14 17:32:13
【问题描述】:

我使用的是 CakePHP 2.2.4。

我正在使用表单助手来创建表单。我需要一个没有名称属性的表单输入。

这可以通过 formhelper 实现吗,还是我应该只使用 HTML 来创建这个表单?

例如在 HTML 中:

<input type="text" maxlength="20" autocomplete="off" class="card-number stripe-sensitive required" />

基本上我可以在 CakePHP 中使用 formhelper 来完成上述工作吗?

谢谢。

【问题讨论】:

    标签: cakephp cakephp-2.2


    【解决方案1】:

    您可以否决$options 数组中的任何属性,这是input() 方法的第二个参数。所以从技术上讲,你可以这样做:

    echo $this->Form->input('Model.field', array(
        'label' => false,
        'div' => false,
        'name' => false,
        'maxlength' => 20,
        'autocomplete' => 'off',
        'class' => 'card-number stripe-sensitive'
    ));
    

    但请注意,如果您想对控制器/模型中的数据进行任何处理,删除 name 属性会使整个字段变得无用,因为 $this-&gt;data 数组从输入的 name 属性中获取它的名称字段。

    【讨论】:

    • @bfavaretto 这不会添加包装 div,因为 'div' 设置为 false。
    • @BorislavSabev 我说过,在 Oldskool 将其添加到答案之前。
    • @bfavaretto 好的,好的。没有难受的人。只是为将来要研究这个问题的其他人澄清一下。 ;)
    • @BorislavSabev 没问题!我删除了该评论以避免进一步混淆。
    【解决方案2】:

    CakePHP 需要 name 属性才能知道表单提交的内容。我不确定我是否理解您为什么不希望有 name 属性。

    如果您担心命名输入会将某些内容传递给保存方法,您可以随时在控制器中使用 unset 在保存/验证之前将其从 $this->request->data 中删除。

    否则,您可以手动将标记添加到视图中,但再次不确定为什么需要未命名的输入元素。

    【讨论】:

    • 我需要一个未命名的输入元素的原因是我正在使用 stripe.com 使用他们的 stripe.js 进行在线信用卡支付,以实现 PCI 合规性。为此,他们要求您用于收集信用卡信息的表格没有输入名称。
    • 输入名称仅用于读取常规表单提交。在任何其他场景下都可以完全可选:只读显示、JavaScript 操作、AJAX 提交、第三方处理……
    猜你喜欢
    • 1970-01-01
    • 2015-09-22
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多