thinkphp公共文件包含

网站每个页面都有头部和尾部文件头部文件和尾部文件都有同样的变量分配这样每个Action都要有同样的代码这怎么办... 网站每个页面都有头部和尾部文件
头部文件和尾部文件都有同样的变量分配
这样每个Action都要有同样的代码
这怎么办
展开
 我来答
yimengshixin
推荐于2016-09-07 · TA获得超过224个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:98万
展开全部
我认为可以这样:
你写一个父类,让所有需要乃至这个头部和尾部文件的都继承这个类,在父类中分配变量
<?php
class CommonAction extends Action

{
function _initialize()

{
if(method_exists($this,'_initialize'))

{
$this->_initialize();

}

//获取相应的变量的值,并赋值

$header = $this->getHeader(); //具体怎么获得这些头部和底部变量的值根据情况自定

$this->assign('header', $header);

}

}

?>

IndexAction.class.php
<?php
class IndexAction extends CommonAction

{

}

?>

在模板文件中包含公共头部与尾部
<include file="public::header"/>
<!---模板其他内容-->
<include file="public::footer"/>
圣鸾OJ
推荐于2016-09-14 · TA获得超过1629个赞
知道小有建树答主
回答量:1136
采纳率:96%
帮助的人:113万
展开全部
你写一个父类,让所有需要乃至这个头部和尾部文件的都继承这个类,在父类中分配变量
<?php
class CommonAction extends Action

{
function _initialize()

{
if(method_exists($this,'_initialize'))

{
$this->_initialize();

}

//获取相应的变量的值,并赋值

$header = $this->getHeader(); //具体怎么获得这些头部和底部变量的值根据情况自定

$this->assign('header', $header);

}

}

?>

IndexAction.class.php
<?php
class IndexAction extends CommonAction

{

}

?>

在模板文件中包含公共头部与尾部
<include file="public::header"/>
<!---模板其他内容-->
<include file="public::footer"/>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萝莉天谲
2015-07-18
知道答主
回答量:93
采纳率:100%
帮助的人:22.7万
展开全部
  1、我们在页面中实现一个分类显示的Widget,首先我们要实现我们首先定义一个Widget控制器层 CateWidget,如下:

  复制代码
代码如下:

  class CateWidget extends Action {

public function menu(){
return 'menuWidget';
}

}

注意是在Widget包中定义,和一般的Action还是有区别的

  2、然后,我们在模版中通过R方法调用这个Widget(扩展Widget方式在模版中使用的是W方法),如果对R函数不了解的参考这里.(http://www.thinkphp.cn/info/134.html

  {:R('Cate/Menu','','Widget')}

  执行后的输出结果是:menuWidget

  3、如果,CateWidget类的menu方法改成:

  复制代码
代码如下:

  class CateWidget extends Action {

public function menu(){
echo 'menuWidget';
}

}

4、模版中的用法则需要改成:

  复制代码
代码如下:

  {~R('Cate/Menu','','Widget')}

  5、如果需要在调用Widget的时候 使用参数,可以这样定义:

  复制代码
代码如下:

  class CateWidget extends Action {

public function menu($id,$name){
echo $id.':'.$name;
}

}

6、模版中的参数调用,使用:

  复制代码
代码如下:

  {:R('Cate/Menu',array(5,'thinkphp'),'Widget')}

  则会输出 5:thinkphp

  7、来一个复杂一点的例子:

  复制代码
代码如下:

  class CateWidget extends Action {

public function menu(){
$menu =
M('Cate')->getField('id,title');

$this->assign('menu',$menu);
$this->display('Cate:menu');

}

}

8、CateWiget类渲染了一个模版文件Tpl/Cate/menu.html,调用模版的灵活也是使用这种方式实现Widget的区别(Widget扩展方式中需要调用renderFile方法渲染模版)。

  在menu.html模版文件中的用法:{$key}:{$title}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式