[小众分享]强大的CBD架构之~关于引入公用js的问题~

浏览:1446 发布日期:2013/06/07 分类:技术分享 关键字: 小众分享
用这个之前,先感叹下tp的CBD(是CBD,没错吧?)模式之强大!!!UP!

背景描述:
1,我是很个懒的人。
2,你是不是遇到这样的问题:很多模板页面都需要include 一个公用的header文件?。这个header模板呢。标签包含了</head>
3,然后呢个别页面又需要调用一些js。比如。add操作的页面可能需要调用jquery.validate.js 注册页面也需要调用它。
4,然后呢,回到第一点。我是个很懒惰的人。其一,我不想再建立header文件。其二呢,又想“规范”(加了引号)下html----我要在</head>之前引入这个需要的js。
------------------------------割一下吧------------------------

然后我的做法是:使用TP的。tag.也就是B。
首先,自己写了个很简单的Behavior(抛砖引玉啦,自己扩展吧。我只是加了一个abc.js。如果还需要引入其他的东西,方法类似啦)。见附件。

然后,修改THINK_PATH下面的Conf目录里面的tags.php.在34行加入。以下代码:'AutoSource',//这个是刚才附件的那个Behavior名字。自己修改了。主要是要注意顺序。
修改后代码如下    'view_filter'   =>  array(   //这个是第33行。
        'AutoSource',//自己的那个Behavior,注意要放到第一个。不然不能解析!-PUBLIC-!这些东东
        'ContentReplace', // 模板输出替换
        'TokenBuild',   // 表单令牌
        'WriteHtmlCache', // 写入静态缓存
        'ShowRuntime', // 运行时间显示
    ),
然后重点来了。
一般的,用TP。都会建立一个CommonAction或者是baseAction之类的公共类了。
如果你还没有这个习惯,我真的不知道该说点什么了。。。(那你直接去Action里改吧,但是很不推荐这种做法0_0)

那么你需要在你的公共类里添加这样的东西。

我是在我的公共类的初始化函数(可能是_initialize,也可能是__construct里。这个看你的习惯了。)
好了,贴上我的示例。public function __construct() {
        
        parent::__construct();//这个不解释了。
        
       //如下,碰到所有add,edit操作都会自动引入前面提到的abcjs了
      //如果你项目很小,就不需要这样麻烦了~~
        if (in_array(strtolower(ACTION_NAME), explode(',', 'add,edit'))) {
            C('AUTO_SOURCE',true);
        }else{
            C('AUTO_SOURCE',false);
        }
        
        

    }

附件 AutoSourceBehavior.class.zip ( 433 B 下载:30 次 )

最佳答案
评论( 相关
后面还有条评论,点击查看>>