Cakephp 3中具有相同控制器的同一个ctp文件中的多种格式

时间:2018-11-03 18:20:57

标签: forms cakephp cakephp-3.x

我在一个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() ?>

因此,我单击“提交”可以正常工作,但是当我单击“搜索”时,它没有执行所需的操作,它仍然处于同一操作中。谢谢!

2 个答案:

答案 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();
?>