gpt4 book ai didi

php - 在 View codeigniter 中调用模型函数

转载 作者:可可西里 更新时间:2023-11-01 07:16:28 25 4
gpt4 key购买 nike

我是MVC的新手,我正在将一个非MVC风格的项目移植到MVC中,但是我遇到了一个问题,需要在View中调用Model函数。

场景:

表 1 - 产品:
包含product_idproduct_name等,每个产品可以有多个版本。

表 2 - 版本:
包含 version_id, version_name, ..., product_id

现在我在 View 中显示产品,在每个产品标题下我必须显示该产品的版本列表,在非 MVC 样式中它非常简单,我可以在 View 中使用以下代码片段:

foreach ($product as $row) 
{
echo $row['product_name'];
if ($main->getVersionList($vresult,$row["product_id"]))
{
foreach ($vresult as $vrow)
{
echo $vrow['version_name'];
}
}
}

现在,我可以将 Product 数组从 Controller 传递到 View ,但是需要生成对应于每个产品的每个 Version 数组呢?

更新:

这是我在 Controller 中的最终工作解决方案(使用 map ):

        $this->load->model ( 'product_mod' );
$data ['products'] = $this->product_mod->getProductList ();
$data ['versions'] = array ();
foreach ( $data ['products'] as $product )
{
$data ['versions'] [$product['product_id']] = $this->product_mod->getVersionList ( $product['product_id'] );
}

最佳答案

MVC 或不 MVC

我首先要注意的是 It is impossible to write classical MVC in PHP 。事实上,类似 MVC 的 PHP 框架,如 CodeIgniter 或 Yii 实现了 sort of MVP其中:

  • View 是被动的并且不知道模型
  • presenter( Controller )改变模型的状态,读取信息并将其传递给 View

归功于 tereško

CodeIgniter 方法

但是,特别是在 CodeIgniter 中,您有 3 个步骤:

  • 创建一个模型来查询数据库并返回数据(作为数组或对象)
  • 创建一个 Controller 以从 Model加载获取结果(Model 的一种方法) , 并将返回的数据传递给 View
  • 创建一个 View 并使用 PHP 循环回显结果,构建 HTML。

聚在一起

考虑到上述方法,您需要从模型中的数据库中获取结果:

application/models/product.php

class Product extends CI_Model
{
public function get_product($product_id)
{
$this->db->select('*')->from('products');
$this->db->where('product_id', $product_id);
$this->db->join('versions', 'versions.product_id = products.product_id');
$query=$this->db->get();
return $query->first_row('array');
}
}

然后在 Controller 中获取并传递结果:

application/controllers/products.php

class Products extends CI_Controller
{
public function view($product_id)
{
$this->load->model('product');
// Fetch the result from the database
$data['product'] = $this->product->get_product($product_id);
// Pass the result to the view
$this->load->view('product_view', $data);
}
}

最后,在 View 中使用返回的数据,生成列表:

application/views/product_view.php

// Use $product to display the product.
print_r($product);

关于php - 在 View codeigniter 中调用模型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21662859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com