我在一个ctp文件中遇到2种不同形式的问题。
说明:我想在同一控制器中使用两种与不同动作相关的表格。我使用第一种形式在表格中添加2个文本字段,而使用第二种形式只是用于搜索和检索数据。
我的ctp:
表1添加邮件和电子邮件
<?= $this->Form->create($message) ?>
<div class="form-group">
<label for="name" class="col-form-label">Name</label>
<input name="name" class="form-control" id="name" placeholder="Your Name" type="text">
</div>
<div class="form-group">
<label for="email" class="col-form-label">Email</label>
<input name="email" class="form-control" id="email" placeholder="Your Email" type="email">
</div>
<?= $this->Form->button('Submit', ['class'=> "btn btn-primary large icon float-right"]);
$this->Form->end() ?>
表格2搜索字段:
<?= $this->Form->create(null, ['url' => ['action' => 'search']]) ?>
<div class="form-group">
<label for="what" class="col-form-label">What?</label>
<input name="what" class="form-control" id="what" placeholder="What are you looking for?" type="text">
</div>
<div class="form-group">
<?php echo $this->Form->input('country_id', [
'options' => $countries,
'id' => 'country_id',
'label' => ['text' => __('Where?')]
]); ?>
</div>
<button type="submit" class="btn btn-primary width-100">Search</button>
<?= $this->Form->end() ?>
因此,我单击“提交”可以正常工作,但是当我单击“搜索”时,它没有执行所需的操作,它仍然处于同一操作中。谢谢!
答案 0 :(得分:3)
此代码没有按照您的想象做:
<?= $this->Form->button('Submit', ['class'=> "btn btn-primary large icon float-right"]);
$this->Form->end() ?>
它将回显提交按钮,但不回显表单结束标签。然后,您打开另一个表单,但是浏览器可能会将其解释为错误的标签并忽略它。 (从技术上讲,我认为针对这种格式错误的HTML的浏览器行为是不确定的,因此您可能会从不同的浏览器获得不同的行为。)
尝试以下方法:
<?php
echo $this->Form->button('Submit', ['class'=> "btn btn-primary large icon float-right"]);
echo $this->Form->end();
?>
或
<?= $this->Form->button('Submit', ['class'=> "btn btn-primary large icon float-right"]);
echo $this->Form->end() ?>
或
<?= $this->Form->button('Submit', ['class'=> "btn btn-primary large icon float-right"]) .
$this->Form->end() ?>
我建议采用第一种方法,因为它的代码更清晰,并且以后进行编辑时不易意外损坏;我永远不允许我管理的项目中的后两个。
答案 1 :(得分:-1)
通过替换以下代码解决了问题:
<?= $this->Form->button('Submit', ['class'=> "btn btn-primary large icon float-right"]);
$this->Form->end() ?>
通过这个:
<?php
echo $this->Form->button('Submit', ['class'=> "btn btn-primary large icon float-right"]);
echo $this->Form->end();
?>