Phalcon предоставляет объект Phalcon \ Http \ Request , доступный из контроллера.
Настоятельно рекомендуется использовать его.
Вот простой пример с запросом 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";
}
// ...
}
}
В вашем случае, если вы хотите, чтобы в вашей форме были две кнопки отправки с различными функциями, у вас есть много решений:
Первое решение
Используйте JavaScript для отправки формы и определения двух маршрутов: одного для сохранения и другого для обновления.
<input type="submit" name="saveBtn" value="Click me">
<input type="submit" name="updateBtn" value="Click me">
Привязывайте клики по каждой кнопке и устанавливайте URL-адрес маршрута в соответствии с желаемым действием.
$(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
<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";
}
}