MVC:如何将数组和变量从模型传递到视图?

我试图将$task数组和$str_pag变量传递给视图。我尝试将变量声明$str_pag为公共变量,但视图显示一个数组,而变量则不显示。


控制器


class Index extends Controller{

   public function __construct() {

     parent::__construct();

     require 'views/header.php';

     require 'models/index_model.php';


     }


   public function index() {

     $tasks = Index_Model::index($id, $login, $email, $password);

     require 'views/index/index.php';

     require 'views/footer.php';

     }

}

模型


class Index_Model extends Model

{

    

    public $str_pag;

    

    public function index($id, $login, $email, $password)

    {

        $db = new Database();


        if (isset($_GET['page'])){

            $page = $_GET['page'];

        }else 

            $page = 1;


        $total = Index_Model::getCount();

        $kol = 3;  

        $art = ($page * $kol) - $kol; 


        $str_pag = ceil($total / $kol);


        $stm = $db->prepare('SELECT * FROM users LIMIT ?,?');

        $stm->bindValue(1, $art, PDO::PARAM_INT);

        $stm->bindValue(2, $kol, PDO::PARAM_INT);

        $stm->execute();


        $task = array();

        $i=0;

        while($row=$stm->fetch()) {

            $task[$i]['name'] = $row['name'];

            $task[$i]['email'] = $row['email'];

            $i++;

        }

        return $task;

    }


慕田峪9158850
浏览 53回答 1
1回答

RISEBY

您可以从 Model 返回您需要的任何内容作为值数组。然后,在您调用模型方法的控制器内,只需将其分配给将传递给视图的变量。解决方案:在模型更改return $task;中return [$task, $str_pag];然后在控制器中编辑你的index()方法,如下所示:public function index() {     list($tasks,$str_pag) = Index_Model::index($id, $login, $email, $password);     require 'views/index/index.php';     require 'views/footer.php';}只是提一下,尝试从视图访问模型的公共属性不是一个好主意,因为它破坏了整个MVC想法。$_GET与从模型代码访问全局变量一样。而不是这个 - 将其作为参数传递并从return语句中获取它。这就是控制器“控制”所有这些东西的责任。
打开App,查看更多内容
随时随地看视频慕课网APP