将数组从 Codeigniter 传递到 Smarty
Passing an array from Codeigniter to Smarty
我使用 Codeigniter 和 Smarty 作为我的模板引擎。我有一个主模板
(master.tpl) 我在我的页面模板中继承。在我的一个页面中,我试图访问从数据库中提取的数据,但我还没有成功。
我的模型是这样的:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Class company extends CI_Model
{
public function __construct()
{
// Call the constructor
parent::__construct();
// Load database access
$this->load->database();
}
public function get_companies()
{
// Query the companies table
$query = $this->db->get('companies');
return $query->result();
}
}
我的控制器是这样的:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Companies extends CI_Controller {
public function index()
{
// Load the companies model
$this->load->model('company');
$companies = $this->company->get_companies();
$data['complist'] = $companies;
//load the department_view
$this->load->view('companies',$data);
}
}
这是我的页面视图的主要部分:
...
<tbody>
{foreach from=$companies item=company}
<li>{$data.name}</li>
{/foreach}
</tbody>
...
我的 master.tpl 在页面视图中继承的代码块如下所示:
...
{块名=内容}{/块}
...
我只是想显示从我的数据库中检索到的公司列表,但我不知道如何访问保存数据的数组。我做错了什么?
编辑:
这是我收到的错误消息:
Message: Undefined index: companies
Message: Trying to get property of non-object
尝试让公司像这样$data['companies'] = $this->company->get_companies();
并在 config/autoload 中自动加载您的数据库库。php 好多了。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Companies extends CI_Controller {
public function index() {
$this->load->model('company');
$data['companies'] = $this->company->get_companies();
$this->load->view('companies',$data);
}
}
型号
制作模型 Class 将 company 更改为 Company
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Company extends CI_Model {
public function __construct() {
parent::__construct();
}
public function get_companies() {
$query = $this->db->get('companies');
if ($query->num_rows() > 0) {
return $query->result();
// or
// return $query->result_array();
} else {
return false;
}
}
在视图中我知道你使用 smarty 但 php 方式示例正常 php 在视图中没有 smarty 只是示例。
<?php foreach ($companies as $company) {?>
<?php echo $company['name'];?>
<?php }?>
聪明
<tbody>
{foreach from = $companies item = $company}
<tr>
<td>{$company.name}</td>
</tr>
{/foreach}
</tbody>
正如 Tpojka 所提到的,我试图访问错误的变量,所以我不得不更改它,但是 foreach 循环中的语法是 $companies->name。这是模板中的循环现在的样子:
{foreach from=$companies item=company}
<tr>
<td>{$company->name}</td>
<td>{$company->address}</td>
<td>{$company->city}</td>
<td><a href="tel:{$company->phone}">{$company->phone}</a><td>
<td><a href="mailto:{$company->email_address}">{$company->email_address}</a></td>
<td class="center">
<a class="btn btn-success" href="#">
<i class="fa fa-search-plus "></i>
</a>
<a class="btn btn-info" href="#">
<i class="fa fa-edit "></i>
</a>
<a class="btn btn-danger" href="#">
<i class="fa fa-trash-o "></i>
</a>
</td>
</tr>
{foreachelse}
No records found.
{/foreach}
我使用 Codeigniter 和 Smarty 作为我的模板引擎。我有一个主模板 (master.tpl) 我在我的页面模板中继承。在我的一个页面中,我试图访问从数据库中提取的数据,但我还没有成功。
我的模型是这样的:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Class company extends CI_Model
{
public function __construct()
{
// Call the constructor
parent::__construct();
// Load database access
$this->load->database();
}
public function get_companies()
{
// Query the companies table
$query = $this->db->get('companies');
return $query->result();
}
}
我的控制器是这样的:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Companies extends CI_Controller {
public function index()
{
// Load the companies model
$this->load->model('company');
$companies = $this->company->get_companies();
$data['complist'] = $companies;
//load the department_view
$this->load->view('companies',$data);
}
}
这是我的页面视图的主要部分:
...
<tbody>
{foreach from=$companies item=company}
<li>{$data.name}</li>
{/foreach}
</tbody>
...
我的 master.tpl 在页面视图中继承的代码块如下所示: ... {块名=内容}{/块} ...
我只是想显示从我的数据库中检索到的公司列表,但我不知道如何访问保存数据的数组。我做错了什么?
编辑: 这是我收到的错误消息:
Message: Undefined index: companies
Message: Trying to get property of non-object
尝试让公司像这样$data['companies'] = $this->company->get_companies();
并在 config/autoload 中自动加载您的数据库库。php 好多了。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Companies extends CI_Controller {
public function index() {
$this->load->model('company');
$data['companies'] = $this->company->get_companies();
$this->load->view('companies',$data);
}
}
型号
制作模型 Class 将 company 更改为 Company
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Company extends CI_Model {
public function __construct() {
parent::__construct();
}
public function get_companies() {
$query = $this->db->get('companies');
if ($query->num_rows() > 0) {
return $query->result();
// or
// return $query->result_array();
} else {
return false;
}
}
在视图中我知道你使用 smarty 但 php 方式示例正常 php 在视图中没有 smarty 只是示例。
<?php foreach ($companies as $company) {?>
<?php echo $company['name'];?>
<?php }?>
聪明
<tbody>
{foreach from = $companies item = $company}
<tr>
<td>{$company.name}</td>
</tr>
{/foreach}
</tbody>
正如 Tpojka 所提到的,我试图访问错误的变量,所以我不得不更改它,但是 foreach 循环中的语法是 $companies->name。这是模板中的循环现在的样子:
{foreach from=$companies item=company}
<tr>
<td>{$company->name}</td>
<td>{$company->address}</td>
<td>{$company->city}</td>
<td><a href="tel:{$company->phone}">{$company->phone}</a><td>
<td><a href="mailto:{$company->email_address}">{$company->email_address}</a></td>
<td class="center">
<a class="btn btn-success" href="#">
<i class="fa fa-search-plus "></i>
</a>
<a class="btn btn-info" href="#">
<i class="fa fa-edit "></i>
</a>
<a class="btn btn-danger" href="#">
<i class="fa fa-trash-o "></i>
</a>
</td>
</tr>
{foreachelse}
No records found.
{/foreach}