PHP-CodeIgniter 如何全局传值?

发布于 2017-01-26 03:42:26 字数 92 浏览 1307 评论 4

现在从数据库中 读取一条信息,想在所有的模板页面中显示,应该怎么传值?

有没有类似这样的方法 $this->assign('abc',$abc);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

偏爱自由 2017-08-21 16:50:37

在applicationcore目录下拓展CI_Controller, 拓展的类里调用数据,全局可调用

晚风撩人 2017-04-22 13:17:17

我可以挖坟不?
CI全局变量之类的,目前我自己常用的有两种方法
一、写个库到/application/libraries/下,比如global_var.php

 class Global_var
{
var $CI;

/**
* 在构造函数内加载变量
*
*/
function __construct()
{
$this->CI =& get_instance();

$global['var1'] = 'test1';

$this->CI->load->vars($global);
}
}

然后在config/autoload.php中的$autoload['libraries']加入global_var,之后$var1就可以直接在view里使用了。

二、另外一种方法就是在core中扩展MY_Controller,在这个扩展类中定义$viewdata,如

 class MY_Controller extends CI_Controller
{
var $viewdata = array();

/**
* something to say
*/
function __construct()
{
$this->viewdata['var1'] = 'test1';
// do something...
}
}

控制器继承MY_Controller之后,可以继续增加$this->viewdata的数据

 class Product extends MY_Controller
{
/**
* something to say
*/
function __construct()
{
parent::__construct();
// do something...
}

function index()
{
$this->viewdata['var2'] = '.....';
$this->load->view('view_file', $this->viewdata);
}

}

$this->load->view('view_file', $this->viewdata); 之后,view文件内就可以使用$var1

以上两种方法可以实现全局数据,比如用户登录信息、放在头部的一些动态内容。

清晨说ぺ晚安 2017-03-10 02:14:48

这与前台页面布局有关。你看,假如你是这样的场景:页面分为导航栏和内容展示夜,你希望用户进入不同页面时导航栏会有标题的高亮显示,这时就需要你说的向全局投递数据给前台。

解决:你先在视图文件夹建立一个index.php文件,为项目的整体页面架构。

<html>
<head>
<!-- head部分 -->
</head>

<body>
<!--你页面导航栏部分-->
<?php $this->load->view($template);?> <!-- 加载你页面的主体内容,其中$template为你想要加载的其他视图 -->
</doby>
</html>

然后在你的控制器中:

$data['template'] = 'set_bad';
$this->load->view('index',$data);

说明:这个控制展示的视图文件为set_bad;
$data 为投递给视图的数据,CI规定:当调用多个视图时,只需向其中一个投递数据在其他视图也能使用。 故$data也可以投递给上面的index.php和set_bad.php视图文件;
你要在所有的模板页面中显示,在这中模式下,只需把值传递给index.php视图即可,set_bad.php视图显示本页面的特殊数据

PS:CI论坛有个相似的例子:http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=1176

归属感 2017-02-25 14:03:07

请参看CI手册--视图--中的给视图添加动态数据

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文