我在 CodeIgniter 中使用 HMVC 模式。我有一个控制器,它通过 modules::run() 函数加载 2 个模块,并将一个参数传递给每个模块。
如果任一模块无法匹配传递的参数,我想调用 show_404()。它可以工作,但它会在我现有的模板中加载错误页面的完整 HTML,因此 HTML 会中断并且看起来很糟糕。我想我希望它重定向到错误页面,这样它就不会运行第二个模块。有没有办法做到这一点而不改变网址?
是否可以在不更改 URL 的情况下从模块重定向到 show_404()?
这是正在发生的事情的一个过度简化的示例:
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);
}
我想只有更好的方法可以解决它,但我没有看到它。有任何想法吗?