我正在尝试在Phalcon PHP框架中制作一个简单的示例,所以我有一个包含两个字段name和email以及一个提交按钮的视图。当我单击此按钮时,将调用控制器的功能以将名称和电子邮件存储在数据库中。此操作进展顺利,问题是我尝试在操作结束后显示消息,但我仍然拥有包含表单(名称,电子邮件)的视图。这是我的代码。
我的结帐控制器。
<?php
class CheckoutController extends 'Phalcon'Mvc'Controller
{
public function indexAction()
{
}
public function registerAction()
{
$email = new Emails();
//Stocker l'email et vérifier les erreurs
$success = $email->save($this->request->getPost(), array('name', 'email'));
if ($success) {
echo "Thanks for shopping with us!";
} else {
echo "Sorry:";
foreach ($user->getMessages() as $message) {
echo $message->getMessage(), "<br/>";
}
}
}
}
视图
<!DOCTYPE html>
<html>
<head>
<title>Yuzu Test</title>
</head>
<body>
<?php use Phalcon'Tag; ?>
<h2>Checkout</h2>
<?php echo Tag::form("checkout/register"); ?>
<td>
<tr>
<label for="name">Name: </label>
<?php echo Tag::textField("name") ?>
</tr>
</td>
<td>
<tr>
<label for="name">E-Mail: </label>
<?php echo Tag::textField("email") ?>
</tr>
</td>
<td>
<tr>
<?php echo Tag::submitButton("Checkout") ?>
</tr>
</td>
</form>
</body>
</html>
您可以使用 Flash 消息,因此不必中断应用程序流。问候
在控制器代码期间echo()
不会(不应该)工作,除非您关闭视图,因为它在调度后被缓冲和清除。
如果要确保它以这种方式发生,只需在方法末尾添加die()
registerAction()
即可。
如果为 registerAction()
创建单独的视图,则可以使用在控制器方法中声明$this->view->message = ...
或$this->view->setVar('message', ...)
的变量。比,在视图文件中,您可以按<?php echo $this->view->message; ?>
或<? echo $message; ?>
重用它们。
我认为
您必须在控制器函数寄存器的末尾编写以下行操作
$this->视图->禁用();