Php 如何区分phalcon框架控制器中的多个按钮动作?例子;提交、更新和清除按钮
Php 如何区分phalcon框架控制器中的多个按钮动作?例子;提交、更新和清除按钮,php,button,phalcon,Php,Button,Phalcon,名称 类型 有很多解决方案,我将对您的代码进行重构: 不要在同一表单上使用多个Submit按钮。在呈现表单时使用简单表单和IF logic 完整的API和UI分离(表单按钮有JS处理程序,Phalcon只是API后端) 您的示例,但将/分派到不同的操作(如果发布['submit']&&&u发布['somethingelse']),更通用 您需要给出提交按钮的名称 <input type="submit" name="submit" value="submit"> <input
名称
类型
有很多解决方案,我将对您的代码进行重构:
Submit
按钮。在呈现表单时使用简单表单和IF logic
如果发布['submit']&&&u发布['somethingelse']
),更通用您需要给出提交按钮的名称
<input type="submit" name="submit" value="submit">
<input type="submit" name="update" value="update">
假设您不使用,这实际上可以通过以下方式缩短:
如果需要submit按钮显示一个值并提交另一个值,可以使用button元素,如下所示:
<input type="submit" name="act" value="submit">
<input type="submit" name="act" value="update">
<button type="submit" name="act" value="submit">New Entry</button>
<button type="submit" name="act" value="update">Edit Entry</button>
新条目
编辑条目
您还可以使用隐藏元素来实现这一点,并使用多种形式
由于您是Phalcon的新手,我建议您使用一些简单的示例,如和,它们出现在下一页的“教程”部分:Phalcon提供了一个可从控制器访问的对象。
强烈建议使用它 下面是一个简单的POST请求示例:
<?php
use Phalcon\Mvc\Controller;
class MyController extends Controller
{
public function processFormAction()
{
// Retrieve value of <input name="foo" />
$form_field = $this->request->getPost('foo');
if ($form_field === "bar") {
echo "Foo = bar";
} else {
echo "Foo != bar";
}
// ...
}
}
在控制器中,有两种方法
public function saveAction() {
// Do save
}
public function updateAction() {
// Do update
}
第二种解决方案
给每个人一个名字,点击的一个将作为任何其他输入发送
<input type="submit" name="saveBtn" value="Click me">
<input type="submit" name="updateBtn" value="Click me">
第三种解决方案
将名称定义为数组
<input type="submit" name="submit[save]" value="Click me">
<input type="submit" name="submit[update]" value="Click me">
1) 请你进一步说明原因好吗?以及进一步的IF逻辑。什么意思?在我看来,为每个特定的按钮分配一个过程是简单而直接的。但我可能错了。请引导我。2) 我不明白,对不起。3) 我不认为我的解决方案会在phalcon框架下起作用,因此我提出了这个问题。我也很难理解整个路线/调度的事情。感谢您的回复:)关于第一点-Phalcon默认行为是MVC,这意味着-视图有表单和按钮,按钮有动作,动作有模型更新的逻辑。通过添加额外的按钮,更新逻辑变得复杂,并且还依赖于发布的数据。将一个视图/表单上的不同行为混合到一个动作和多个IFs中是不可能的。这就是为什么开发人员使用RESTAPI(参见2.option)的原因。我仍然在MVC中爬行。学习时我会记下你说的话。谢谢你的指导:)我的天啊,它起作用了!谢谢。我用有限的知识探索了一大堆东西,但很长一段时间都没有进步。谢谢你,先生。在这里,我想我永远不能像平时一样使用phalcon框架或任何框架(phalcon是我学习的第一个框架,哈哈哈)。我已经投票决定了这个答案。谢谢。我想我理解这部分。只是我不知道如何在一个表单中区分多个按钮的过程。
$(function() {
$('input[name="saveBtn"]').on('click', function(event) {
event.preventDefault();
form.attr('action', 'url-to-save');
form.submit();
});
$('input[name="updateBtn"]').on('click', function(event) {
event.preventDefault();
form.attr('action', 'url-to-update');
form.submit();
});
});
public function saveAction() {
// Do save
}
public function updateAction() {
// Do update
}
<input type="submit" name="saveBtn" value="Click me">
<input type="submit" name="updateBtn" value="Click me">
$submitSave = $this->request->getPost('saveBtn', 'string', false);
$submitUpdate = $this->request->getPost('updateBtn', 'string', false);
if ($submitSave) {
echo "This is a save";
} elseif ($submitUpdate) {
echo "This is an update";
}
<input type="submit" name="submit[save]" value="Click me">
<input type="submit" name="submit[update]" value="Click me">
$submit = $this->request->getPost('submit');
if (!empty($submit)) {
if (!empty($submit['save'])) {
echo "This is a save";
} elseif (!empty($submit['update'])) {
echo "This is an update";
}
}