php - 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;
}
解决方案
您可以从 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
语句中获取它。
那是控制器“控制”所有这些东西的责任。
推荐阅读
- r - 在 bookdown 中嵌入数据文件
- sql - Oracle SQL 用于提取 Nltk 等人名
- python - python - 如何将整数数组映射到另一个整数
- javascript - REACT - 更新状态,然后执行 console.log ,显示未更新状态
- python - 如何从 Python 中的 csv 构建多类列表?
- javascript - ReactJS html-docx-js/blob:ms office 无法读取生成的 docx 文件,并且图像未保存
- ios - Pod Install 移除/删除一些不相关的对象/属性
- javascript - Angular - 如何检查是否过滤了 Excel 文件?
- python-3.x - Python 3 缩短分配代码和绕过 TextIO 的技巧
- java - 在不调用父类构造函数的情况下,可以在java中直接调用子类构造函数