【问题标题】:Delete div generated by CakePHP Form create删除 CakePHP Form create 生成的 div
【发布时间】:2014-11-22 11:26:46
【问题描述】:

CakePHP 代码

<?php echo $this->Form->create('KPI');?>

HTML 输出

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

我想删除在 html 输出中显示的自动生成的 div。怎么删除cakephp form create生成的那个div?

【问题讨论】:

  • 你为什么要这样做?
  • 我想用 jquery 代码来检测表单中的 div,但我不需要不必要的 div。
  • @ndm 是否可以不生成隐藏的div?
  • 这不是一个很好的理由,你的选择器应该足够具体,不能匹配这样的 id/class-less 元素。你知道这个标记有什么用吗?因为如果你不这样做,那么你真的不应该删除它。
  • 我必须同时使用POSTForm Helper 然后我可以删除它吗?

标签: cakephp


【解决方案1】:

正如 cmets 中已经提到的,您不应该删除该标记,除此之外,只有完全覆盖 FormHelper::create() 才有可能,请参阅

另请注意,表单末尾可能有一个额外的隐藏块,请参阅FormHelper::secure()

删除包装器的唯一更简单的方法是完全删除隐藏的包装器,例如,可以通过将custom config 用于HtmlHelper 来修改hiddenblock 标签,使其不会t 包含包装,但是 这不是一个好主意 - 不要这样做!

这里的问题是你不能只删除这个特定的包装div 元素,隐藏的inputdiv 齐头并进。而input 确保 CakePHP 能够找出正确的请求方法(POSTPUTDELETE)。

因此,只需让您的 jQuery 选择器更具体,不要只选择 div 元素,而是确保您的元素具有适当的类集,然后通过 class 选择它们。

【讨论】:

    【解决方案2】:
        <?php echo $this->Form->create('Kpi', array(
                  'inputDefaults'=>array('div'=>'false', 'label'=>false)));
             ?>
    

    【讨论】:

    • 对不起!它还生成 div 标签。
    • 那根本行不通,FormHelper::create() 没有这样的选项。
    • 您的新代码也不起作用,inputDefaults 不适用于这些隐藏元素。 false 也不应该用引号引起来。无论如何,没有会影响隐藏div的选项,只需查看the source
    • 只需一分钟即可尝试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 2017-11-27
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多