Html CakePHP隐藏方法POST

Html CakePHP隐藏方法POST,html,cakephp,Html,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: f

使用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显示为:无;那里的风格?我怎样才能让它不出现


更新:澄清一下,我想知道为什么div和div中隐藏的输入都会出现。它们似乎不是必需的,因此我不希望它们出现在那里。

div出现在那里是为了有效的HTML

在HTML5之前,非块级元素(如
)在
标记中不直接有效


编辑:要回答你的问题,你不能轻易摆脱它。它是硬编码到FormHelper::create()中的,您必须在自定义helper中重写该方法。为什么它会困扰你呢?

使用hiddenField=>false属性可能会对你有所帮助

无论何时使用FormHelper->create()方法,都会生成一个隐藏的输入字段来覆盖默认的HTTP方法。您也可以通过传递来更改它。请询问它是否对您有效。

试试:

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

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

对于最近参与此操作的任何人,现在有一个简单的解决方案,它不涉及自定义助手。使用,问题代码块由“hiddenBlock”模板生成。(请参见此处默认模板的完整列表:)

因此,要修改CakePHP文档中给出的示例以匹配这种情况,并删除隐藏的
for_方法(假设HTML5)周围的包装


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

这不会停止该div的输出,我稍后会尝试,但我不会覆盖任何内容。注意form-method属性已经是'post'。好吧,我正在使用HTML5,但我的问题是关于div元素及其内部的输入。为什么div在那里,为什么隐藏的输入在那里?这并没有“困扰”我,我只是想更好地理解我正在使用的框架。好吧,如果你使用安全组件,更明显的必要字段将被添加到csrf检查和该分区中。据我所知,输入是区分添加(创建)和编辑(更新)表单。向“添加”操作添加帖子,编辑“编辑”操作的帖子,为什么我需要一个隐藏的输入?假设你对操作有不同的名称,FormHelper需要知道它是否创建或更新表单,以及是否在仅更新验证规则中需要这样的内容(不是100%确定它仅用于此)Meh。如果是这样的话,我不太确定我是否喜欢。但如果这是卡基的方式,可能不值得去战斗。
// In your View class
$this->loadHelper( 'Form' , [ 'templates' => 'app_form' ] );


// in config/app_form.php
return [
    'hiddenBlock' => '{{ content }}'
];