CakePHP隐藏_method POST

时间:2012-07-20 01:19:06

标签: html html5 cakephp

使用FormHelper-> create(...)时,呈现的HTML如下所示:

<form action="/blogs/add" method="post" accept-charset="utf-8">
    <div style="display:none;">
        <input type="hidden" name="_method" value="POST">
    </div>

    <!-- omitted: form inputs -->
</form>

为什么这个div与display:none;风格吗?如何让它不显示?

更新:为了清楚,我想知道为什么div中的div和隐藏输入都显示出来。它们似乎没有必要,因此我不希望它们在那里。

5 个答案:

答案 0 :(得分:2)

对于最近来到这里的人来说,现在有一个简单的解决方案,它不涉及自定义助手。使用FormHelper templates,有问题的代码块由'hiddenBlock'模板生成。 (请参阅此处的完整默认模板列表:https://api.cakephp.org/3.2/class-Cake.View.Helper.FormHelper.html#%24_defaultConfig)。

因此,修改CakePHP文档中给出的示例以匹配此案例并删除隐藏if(ivBall.equals(Color.RED)) { Toast.makeText(getApplicationContext(), "good", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "wrong", Toast.LENGTH_SHORT).show(); } 周围的包裹<div>以获取_method(假设为HTML5):

<input>

我遇到了这个问题,因为我最近实施了一个不允许内联样式的内容安全策略,我想我应该分享我的工作解决方案。

答案 1 :(得分:1)

div是有效的HTML。

  

在HTML5之前,非块级元素(例如<input>)在<form>标记内无效。 Source

编辑:要回答你的问题,你不能轻易摆脱它。它被硬编码到FormHelper :: create()中,你必须在自定义帮助器中覆盖该方法。为什么打扰你呢?

答案 2 :(得分:0)

This link可能会对您有所帮助。

每当使用FormHelper-&gt; create()方法时,都会生成一个隐藏的输入字段来覆盖默认的HTTP方法。您也可以通过传递type option来更改它。请问它是否对你不起作用。

答案 3 :(得分:0)

尝试:

echo $this->Form->create('User', array(
'inputDefaults' => array(
    'div' => false
   )
));

不会在表单的任何输入上创建div。

答案 4 :(得分:-1)

使用hiddenField =&gt;虚假财产