我正在尝试在Phalcon PHP框架中创建一个简单示例,因此我有一个视图,其中包含两个字段名称和电子邮件以及一个提交按钮。当我单击此按钮时,将调用控制器的功能以将名称和电子邮件存储在DB中。这个动作很顺利,问题是我试图在动作结束后显示一条消息,但我仍然有包含表单(名称,电子邮件)的视图。这是我的代码。
我的结帐控制器。
<?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>
答案 0 :(得分:2)
您可以使用Flash Messages,因此您不必破坏申请流程。 此致
答案 1 :(得分:1)
echo()
将不会(不应该)工作,除非您关闭视图,因为它在调度后被缓冲并清除。
如果您想确保以这种方式发生,只需在die()
方法的末尾添加registerAction()
。
如果您为registerAction()
创建单独的视图,则可以在控制器方法中使用您使用$this->view->message = ...
或$this->view->setVar('message', ...)
声明的变量。在视图文件中,您可以<?php echo $this->view->message; ?>
或<? echo $message; ?>
重复使用它们。
答案 2 :(得分:0)
我认为你必须在控制器函数registerAction
的末尾写下面一行$这 - &GT;视图 - &GT;禁用();