php - 如何区分 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 有关。如果有人可以帮助指导我,将不胜感激。
解决方案
您需要提供提交按钮的名称。
<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 的新手,我建议您尝试一些更简单的示例,例如invoice和vökuró,它们出现在下一页的“教程”部分:
https ://docs.phalconphp.com/3.4/en
推荐阅读
- android - 获取有关在较新的 Android 上使用 retrofit2 的数据的问题
- javascript - 从数组中获取对象标签并设置为 aria-label
- string - 使用while循环替换Powershell多个字符串
- javascript - Discord.js Music Bot:如何创建一个命令将整个歌曲播放列表添加到队列中
- javascript - 在 React Naive EXPO 中打印图像(屏幕截图)
- css - MaterialUI/CSS 创建这个盒子
- python - 如何检查值是否为无
- processing - 如何在处理中使用 mousePressed() 处理 2 个不同的事件?
- r - 我收到一个错误“火车”和“班级”的长度不同
- sql - SQL - 在雪花中一次查找多个表的记录计数