在许多控制器中,我需要验证对象(URL中传递的ID)是否存在。
我实际上每个控制器都有这个骨架:
public function my_page($id){
$object = $this->Object_model->getObject($id);
if($object == NULL){ // If id mentions a non-existant object, redirect to home
redirect("home");
}
/** MYCONTROLLER **/
}
这是一种好方法,最干净的方法吗?
其他一些选项是助手/模型方法/控制器方法......我不知道PHP的哲学是什么。
答案 0 :(得分:0)
不要将控制器与路由应用程序的任务混合在一起。首先进行路由,然后根据给定的结果实例化一个控制器。
也许这个关于路由器的答案澄清了我的意思:How does MVC routing work?
答案 1 :(得分:0)
您的数据库查询的答案是布尔值,因此您必须检查它是否为FALSE,而不是NULL
public function my_page($id){
$object = $this->Object_model->getObject($id);
if($object === FALSE){
redirect("home");
}
/** MYCONTROLLER **/
}
答案 2 :(得分:0)
if ( ! $object = $this->Object_model->getObject( $id ) ) {
redirect( "home" ) ; }
更好的是Object_model总是返回一些是否有错误。
$object = $this->Object_model->getObject( $id ) ;
if ( $object->errorFlag == true ) {
redirect( "sorry/" . $object->errorMsg ) ; }