为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕田峪9158850 2023-09-22 15:23:00
我试图将$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;    }
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

您可以从 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语句中获取它。


这就是控制器“控制”所有这些东西的责任。


查看完整回答
反对 回复 2023-09-22
  • 1 回答
  • 0 关注
  • 49 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信