我正在使用元素来渲染表单。问题是当我包含元素echo $this->element('report', array('id' => $id, 'title' => $title));
时,表单显示为:
<form id="BugAdminIndexForm" class="form-vertical" accept-charset="utf-8" method="post" action="/admin/stations"></form>
<div style="display:none;">
<input type="hidden" value="POST" name="_method">
</div>
<input id="BugType" type="hidden" value="database" name="data[Bug][type]">
...
因此,在呈现所有输入之前关闭表单。
在视图中单独测试表单时(不包含在元素中),它使用相同的代码(除了对元素的调用除外)正确呈现。
这是什么原因?
修改
这是元素的代码:
<div class="modal fade" id="modal-<?php echo $id; ?>">
<div class="modal-header">
<a class="close" data-dismiss="modal">×</a>
<h3>Report bug</h3>
</div>
<div class="modal-body">
<?php echo $this->Form->create('Bug', array('class' => 'form-vertical')); ?>
<?php
echo $this->Form->hidden('type', array('value' => 'database'));
echo $this->Form->hidden('title', array('value' => $title));
echo $title;
echo $this->Form->input('bug', array('div' => 'control-group', 'label' => array('text' => 'Bug', 'class' => 'control-label'), 'between' => '<div class="controls">', 'after' => '</div>', 'format' => array('before', 'label', 'between', 'input', 'error', 'after'), 'error' => array('attributes' => array('wrap' => 'span', 'class' => 'help-inline'))));
?>
<?php echo $this->Js->submit('Send', array(
'url' => array('superuser' => true, 'controller' => 'bugs', 'action' => 'report'),
'type' => 'json',
'success' => '
if(data === true){
$("#modal-'.$id.' .modal-body").html("thanks");
} else if(data === false){
$("#modal-'.$id.' .modal-body").html("error");
} else {
$.each(data, function(field, error){
$input = $("#modal-'.$id.' .modal-body #Bug" + field.charAt(0).toUpperCase() + field.slice(1));
$input.after("<p class=\"help-block\">" + error + "</span>");
$input.closest(".control-group").addClass("error");
});
}
',
'div' => false
)); ?>
<?php echo $this->Form->end(); ?>
</div>
<div class="modal-footer">
</div>
答案 0 :(得分:0)
将您的元素更改为以下内容以查看其是否正确显示:
</div>
<div class="modal-body">
<?php
echo $this->Form->create('Bug');
echo $this->Form->hidden('type', array('value' => 'database'));
echo $this->Form->hidden('title', array('value' => $title));
echo $this->Form->input('bug');
echo $this->Form->end('Submit');
?>
</div>
<div class="modal-footer">
</div>
答案 1 :(得分:0)
我遇到了同样的问题,但在一个视图中,Brett F添加的评论帮助了我。
我的创建包含在表格中。我在表格之前和之后分别移动了Form-&gt; create和Form-&gt;结束,一切都按预期工作。
这个答案应归功于他。
就我而言,CakePHP 3.2.7