首页 > 解决方案 > 如何区分 phalcon 框架控制器中的多个按钮动作?例子; 提交、更新和清除按钮

问题描述

<?php echo $this->tag->form("index/index"); ?>
    <label for="nameInput">name</label>
    <?php echo $this->tag->textField("nameInput"); ?>
    <label for="typeInput">type</label>
    <?php echo $this->tag->textField("typeInput"); ?>
    
    <input type="submit" value="submit">
    <input type="submit" value="update">
</form>

在控制器中..像这样的东西..

if (isset($_POST['update'])) {
    //example
    echo 'update';
}
elseif (isset($_POST['submit'])) {
    //example
    echo 'submit';
}

我仍在尝试逐步学习 Phalcon。对我来说,关于这个特定问题的文档并不多。我认为这与我不完全了解 Phalcon 有关。如果有人可以帮助指导我,将不胜感激。

标签: phpbuttonphalcon

解决方案


您需要提供提交按钮的名称。

<input type="submit" name="submit" value="submit">
<input type="submit" name="update" value="update">

当使用提交按钮提交表单时,其名称:值对与表单一起发送。您需要为其命名才能在 $_POST 数组中找到它。也请避免提交按钮的名称“提交”,因为它可能会导致 JavaScript 的 submit() 方法出现问题。与其同时检查 $_POST['update'] 和 $_POST['submit'],不如对两个提交按钮使用相同的名称,并在后端用它们的值区分它们,如下所示:

<input type="submit" name="act" value="submit">
<input type="submit" name="act" value="update">

然后你会检查

if (isset($_POST['act']) && $_POST['act'] === 'update') {
    echo 'update';
}
elseif (isset($_POST['act']) && $_POST['act'] === 'submit') {
    echo 'submit';
}

假设你没有使用尖叫,这实际上可以用沉默操作符缩短,如下所示:

if (@$_POST['act'] === 'update') {
    echo 'update';
}
elseif (@$_POST['act'] === 'submit') {
    echo 'submit';
}

如果您需要提交按钮来显示一个值并提交另一个值,您可以像这样使用按钮元素:

<button type="submit" name="act" value="submit">New Entry</button>
<button type="submit" name="act" value="update">Edit Entry</button>

您也可以使用隐藏元素来做到这一点,并使用多种形式。

由于您是 Phalcon 的新手,我建议您尝试一些更简单的示例,例如invoicevökuró,它们出现在下一页的“教程”部分:
https ://docs.phalconphp.com/3.4/en


推荐阅读