jus*_*inl 3 model-view-controller redirect controller model codeigniter
我正在使用MVC PHP框架Codeigniter,我有一个关于从哪里调用redirect()的直接问题:Controller或Model?
场景:
用户导航到www.example.com/item/555.在我的模型中,我在项目数据库中搜索ID为555的项目.如果找到该项目,我会将结果返回给我的控制器.但是,如果找不到某个项目,我想将用户重定向到某个地方.这个对redirect()的调用是来自模型内部还是控制器?为什么?
没有你的模型应该返回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处理/控制.
模型不是特定于页面的,并且在整个应用程序中全局使用,因此如果另一个类/方法使用该模型,它可能会重定向到不正确的位置,因为它是站点的不同部分.