控制器未在 PhalconPHP 中显示消息


controller not displaying a message in phalcon php

我正在尝试在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->视图->禁用();