我正在使用CodeIgniter中的HMVC模式。我有一个控制器通过modules::run()函数加载了两个模块,每个模块都传递了一个参数。
如果任何一个模块不能匹配传递的参数,我想调用show_404()。它可以工作,但它会在我的现有模板中加载完整的错误页面HTML,导致HTML混乱且难看。我想重定向到错误页面,这样它就不会运行第二个模块。有没有办法做到这一点而不改变URL?
是否可能仅从模块重定向到show_404()而不更改URL?
以下是正在发生的简单示例:
www.example.com/users/profile/usernamehere 该URL调用用户控制器中的此函数:
如果任何一个模块不能匹配传递的参数,我想调用show_404()。它可以工作,但它会在我的现有模板中加载完整的错误页面HTML,导致HTML混乱且难看。我想重定向到错误页面,这样它就不会运行第二个模块。有没有办法做到这一点而不改变URL?
是否可能仅从模块重定向到show_404()而不更改URL?
以下是正在发生的简单示例:
www.example.com/users/profile/usernamehere 该URL调用用户控制器中的此函数:
function profile($username)
{
echo modules::run('user/details', $username);
echo modules::run('user/friends', $username);
}
这些模块运行并检查用户是否存在:
function details($username)
{
$details = lookup_user($username);
if($details == 'User Not Found')
show_404(); // This seems to display within the template when what I want is for it to redirect
else
$this->load->view('details', $details);
}
function friends($username)
{
$details = lookup_user($username);
if($friends == 'User Not Found')
show_404(); // Redundant, I know, just added for this example
else
$this->load->view('friends', $friends);
}
我想可能有更好的方法,但我没有看到。 有什么想法吗?
show_404()
,然后在控制器中捕获该异常并在那里执行show_404()
。如果没有异常,就同时输出这两个结果。无需重定向。 - Zombaya