我正在使用带有 PHP 的 MVC 框架;标准模型/page_model.php、控制器/page.php 和 view/page.php。
我有一个用户注册脚本(改编自此处:php-login.net,如果用户注册不合格(例如电子邮件已被占用),则会返回错误消息:
在我的controller/register.php中,实现如下:
function register_action() {
$registration_successful = $this->model->registerNewUser();
$this->view->errors = $this->model->errors;
if ($registration_successful == true) {
$this->view->render('register/success'); // view/register/success.php
} else {
$this->view->render('register/error'); // view/register/error.php
}
}
在 model/register_model.php 脚本中,当创建错误时,它会以特定的错误消息退出。例如
else {
$this->errors[] = FEEDBACK_UNKNOWN_ERROR
}
然后这个错误会显示在渲染视图上(view/register/error.php):
<?php
if (isset($this->errors)) {
foreach ($this->errors as $error) {
echo '<div class="system_message">'.$error.'</div>';
}
}
?>
这一切都很好。现在,我的问题是:目前,我允许用户从多个页面提交他们的表单。每次发生错误时,它都会呈现注册/错误。实际上,我怎样才能让错误返回与当前页面内联(即错误消息被注入当前视图,ajax 样式),以便用户不会被发送到不同的页面?
我不希望他们失去他们在现场体验中的位置。理想情况下,这只是 PHP,但如果您能具体说明我应该如何实现代码,我也希望得到涉及 AJAX 的答案。