我应该从我的控制器或模型中调用MVC框架中的redirect()吗?

jus*_*inl 3 model-view-controller redirect controller model codeigniter

我正在使用MVC PHP框架Codeigniter,我有一个关于从哪里调用redirect()的直接问题:Controller或Model?

场景:
用户导航到www.example.com/item/555.在我的模型中,我在项目数据库中搜索ID为555的项目.如果找到该项目,我会将结果返回给我的控制器.但是,如果找不到某个项目,我想将用户重定向到某个地方.这个对redirect()的调用是来自模型内部还是控制器?为什么?

Rob*_*itt 6

没有你的模型应该返回false,你应该像这样检查你的控制器:

class SampleModel extends Model
{
    //Construct

    public function FetchItem($id)
    {
        $result = $this->db->select("*")->from("table")->where("item_id",$id)->get();
        if($result->num_rows() == 0)
        {
             return false;
        }
        //return result
    }
}
Run Code Online (Sandbox Code Playgroud)

并在你的控制器内:

function item($id)
{
     $Item = $this->SampleModel->FetchItem($id);

     if(!$Item)
     {
          redirect("class/error/no_item");
     }
}
Run Code Online (Sandbox Code Playgroud)

模型仅用于数据返回标准结果,如键/值对象或布尔值.

所有逻辑都应由Controller处理/控制.

模型不是特定于页面的,并且在整个应用程序中全局使用,因此如果另一个类/方法使用该模型,它可能会重定向到不正确的位置,因为它是站点的不同部分.