控制器没有在phalcon php中显示消息

时间:2015-03-12 15:01:54

标签: php phalcon

我正在尝试在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>

3 个答案:

答案 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;禁用();