用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4975|回复: 17
收起左侧

倾家荡产砸锅卖铁积蓄都拿出,兄弟们快帮我看看吧,没活路了

  [复制链接]
发表于 2012-7-18 14:25:03 | 显示全部楼层 |阅读模式
70CI币
本帖最后由 豆芽彻底疯了 于 2012-7-18 14:42 编辑

例如
view:代码
//头部
$this->load->view("header");

//中间内容

//底部
$this->load->view("foot");

倘若从控制器调用 index这个控制器 调取上面的页面

问题 如果
$this->load->view("header");里有引用数据库操作怎么办
我在header 页面里面引用了一个类 处理之后得到了变量 例如$aaaa在header中
把变量放在index页面里面不可以用 $aaaa 变量就不可以用
第一个问题:怎么让$aaaa可用 千万别告诉我 在控制器里引用
$this->load->view("header");
页面多了成冗余的东西了
一个控制器一个 得疯了
第二个问题:
$this->load->view("header"); 可不可换成 引用控制器 在那个控制器里 在引用view页面

发表于 2012-7-18 14:40:15 | 显示全部楼层
$this->load->view("header",$data);
$this->load->view("foot");

传参 给模板 $data 变量 在 header 及 footer 里都可以访问到 传输一次 多次访问
有什么问题么?
回复

使用道具 举报

 楼主| 发表于 2012-7-18 14:45:11 | 显示全部楼层
暗夜星辰 发表于 2012-7-18 14:40
$this->load->view("header",$data);
$this->load->view("foot");

我处理是在 header 页面处理的 调取数据也是用类调取变量的
回复

使用道具 举报

发表于 2012-7-18 14:56:26 | 显示全部楼层
调取数据应该是在控制器 control中 view是页面模板 你搞错前后关系了吧……
虽然说在页面调取数据也可以用 但是不符合开发规则

应该在control中获取数据 一次性发给 header index footer等页面
回复

使用道具 举报

发表于 2012-7-18 16:19:26 | 显示全部楼层
本帖最后由 sdink 于 2012-7-18 16:23 编辑

include 啊 大哥。

视图
main.php
include(‘header.php’)
<div id="main">干嘛呢</div>
include(‘footer.php’)
视图
header.php
<?php if(isset(用户名)){echo ‘你的用户名是XXX’} ?>
控制器

$this->load->view("main",$data);

这有什么问题吗?
如果你的header.php或footer.php里有很多的php要操作,就用$this->
然后把你的控制器继承一个类(器继承在继承CI的控制器类,所谓的MY_XXX),在那个类里实现你要在header.php和footer.php里的数据注意:
1 如果不是经常更新的内容用缓存或是生成,
2 在你的视图里有时不存在的变量时用isset去判断是否存在,这个不就不会出现错误了吗

回复

使用道具 举报

发表于 2012-7-18 16:25:10 | 显示全部楼层
include 啊 大哥。

视图
main.php
include(‘header.php’)
<div id="main">干嘛呢</div>
include(‘footer.php’)
视图
header.php
<?php if(isset(用户名)){echo ‘你的用户名是XXX’} ?>
控制器

$this->load->view("main",$data);

这有什么问题吗?
如果你的header.php或footer.php里有很多的php要操作,就用$this->
然后把你的控制器继承一个类(器继承在继承CI的控制器类,所谓的MY_XXX),在那个类里实现你要在header.php和footer.php里的数据注意:
1 如果不是经常更新的内容用缓存或是生成,
2 在你的视图里有时不存在的变量时用isset去判断是否存在,这个不就不会出现错误了吗
回复

使用道具 举报

发表于 2012-7-19 01:49:13 | 显示全部楼层
本帖最后由 muvtou 于 2012-7-19 01:51 编辑
sdink 发表于 2012-7-18 16:25
include 啊 大哥。

视图

搂主这位仁兄的 意思 应该是  当所有的页面 头部都一样,而头部导航菜单又都是动态读取栏目,在控制器里每写一个控制器 是不是 都要把导航菜单 数据 像模板里推送一次


我建议此处 可以 使用全局变量 (例如:$data['menu'])  在首页 加载一次 或者直接在自动载入函数载入
回复

使用道具 举报

发表于 2012-7-19 01:52:47 | 显示全部楼层
我建议此处 可以 使用全局变量 (例如:$data['menu'])  在首页 加载一次 或者直接在自动载入函数载入
回复

使用道具 举报

发表于 2012-7-19 09:52:50 | 显示全部楼层
这个分还是送我吧,你config/autoload.php里面自动加载个library
再把你要定义的变量用
PHP复制代码
$this->load->vars(array(
                        'title'=>$this->title,
                ));
复制代码

输出来,就OK了,快把分送我吧
回复

使用道具 举报

发表于 2012-7-19 14:11:40 | 显示全部楼层
本帖最后由 sdink 于 2012-7-19 14:13 编辑

include 啊 大哥。

视图
main.php
include(‘header.php’)
<div id="main">干嘛呢</div>
include(‘footer.php’)
视图
header.php
<?php if(isset(用户名)){echo ‘你的用户名是XXX’} ?>
控制器

$this->load->view("main",$data);

这有什么问题吗?
如果你的header.php或footer.php里有很多的php要操作,就用$this->
然后把你的控制器继承一个类(器继承在继承CI的控制器类,所谓的MY_XXX),在那个类里实现你要在header.php和footer.php里的数据
注意:
1 如果不是经常更新的内容用缓存或是生成,
2 在你的视图里有时不存在的变量时用isset去判断是否存在,这个不就不会出现错误了吗
是这样的,你的header.php和footer.php两个是公共的,但是你的控制器会对应每个不同的页面,而每个控制器都要从数据库里读数据显得繁琐,一但数据有变动或是header.php或footer.php里的变量有改变。你几乎要所有的控制器或是每个函数里的都得改。为了解决这种方案,你的控制器(若test)要继承一个核心类,这个核心类初始化(__construct())时都从数据库里读出来直接赋值给$this->XXX,这个核心类要怎么写呢。这就要扩展CI核心类了。在你的项目core目录下写一个如MY_Controller类,而MY_Controller继承CI_Controller,这样你以后要改header.php若footer.php里的数据直接在MY_Controller相应的地方改,不影响其他操作,而在你的视图里直接用include(‘header.php’),然后在header.php里用$this->XXX调用。但是,这个时候会出现一种情况,说是load类里没有XXX这个变量,怎么办呢。回到你的MY_Controller里。把$this->XXX改成$this->load->XXX,即可使用
回复

使用道具 举报

本版积分规则