自定义MVC:从db中选择计数并显示行数

时间:2015-05-08 09:34:04

标签: php model-view-controller

我第一次使用自定义MVC 工作,并希望显示从DB获取的行数。 我使用以下代码创建了一个模型( controles_model.php ):

class Controles_Model extends Model{

    public function __construct(){
        parent::__construct();
    }

    function controle_counter(){
        $query = $this->db->prepare("SELECT COUNT(*) FROM contrôle");
        $query->execute();
        $count = $query->rowCount();
        return $count;
    }
}

要加载模型,我创建了这个类来动态加载模型。

class Controller{

    function __construct(){     
        $this->view = new View();
    }

    public function loadModel($name){
        $path = 'models/' . $name . '_model.php';

        if(file_exists($path)){
            require 'models/' . $name . '_model.php';
            $modelName = $name . '_Model';
            $this->model = new $modelName();
        }
    }
}

我试图以这种方式显示结果:

<?php $this->controle_counter; ?>

但它不起作用。 这是它给我的错误信息:

  


通知:未定义属性:在 D:\ xampp \ htdocs \ exam_planning \ assets \ template \ controles.php 中查看:: $ controle_counter 13

1 个答案:

答案 0 :(得分:0)

在控制器中,您必须将模型传递给视图,如下所示:

class Controller{

function __construct(){     
    $this->view = new View();
}

public function loadModel($name){
    $path = 'models/' . $name . '_model.php';

    if(file_exists($path)){
        require 'models/' . $name . '_model.php';
        $modelName = $name . '_Model';
        $this->model = new $modelName();
        $this->view->model = $this->model; // <--- add this
    }
}
}

然后在你看来:

<?php echo (!empty $model) ? $model->controle_counter : ''; ?> 

还检查模型是否确实存在,以防文件不存在。