页面的head部分的内容在Cakephp中主要是有htmlhelper来进行控制的,而js部分则是由JavaScripthelper来进行控制的,在controller里面设置好:var $helpers = array(’Html’,'Javascript’);就可以在ctp文件中使用JavaScripthelper对象:$javascript了。具体见正文。

前提是js文件都放在了 webroot/js  目录下面了,下面是范例。

1、$javascript->link($JsName,0); echo $script_for_layout;

在  views/controllers/方法名.ctp文件里面,用$javascript->link($JsName,0);来把 webroot/js/jsname.js 文件加载到 views/layouts/default.ctp 的 $script_for_layout 里面去。

2、echo $javascript->link($JsName,1);

这句话是直接在views/layouts/default.ctp里面用的,放在head区就可以了,或者放置在 views/controllers/方法名.ctp文件 里面也是可以的。

3、echo $javascript->includeScript();

这条语句很牛X,直接把所有的 webroot/js/ 所有js文件 全部读取出来,并打印出来。和php的include函数是一样的感觉,别的语句是生成 <script src=””></script>,这个生成的是<script>js1的内容,js2的内容….< /script>,放在layout的head区域很合适。

4、echo $javascript->includeScript($JsName);

这个是上边语句很类似,只是把某个特定的js文件的内容打印出来而已。

让我们来理解 Blog 例子中的代码(不使用 $scaffold)

  • 按照命名约定, 数据库表 posts 对应有 Post 模型类, 定义在 app/models/post.php 中
  • 在 app/controllers/posts_controller.php 中建立控制类 PostsController 使用 Post 模型类
  • 控制类 PostsController 中如果定义 index 动作, 其输出在 app/views/posts/index.thtml 中定义
  • 目录结构

    app

    于是, 请求 http://.../posts/index 使用 app/controllers/ 中(注意此两目录名不出现在请求路径里)控制类 PostsController 的动作 index 来处理, 用 app/views/posts/index.thtml 响应返回显示

    • models

      • post.php
    • controllers
      • posts_controller.php
    • views
      • posts

        • index.thtml
        • view.thtml
        • edit.thtml
        • add.thtml
        • ...
      • layouts
        • default.thtml
  • 在动作 index 结束时会自动调用 render 方法用默认的布局 default.thtml 显示 index.thtml 视图
    • 而布局 default.thtml 除了定义页头页尾等, 其中的 echo $content_for_layout 是实际显示 index.thtml 的地方
    • 在 app/views/layouts/default.thtml 中可以自定义布局以代替默认的布局
  • 动作 index 中的关键代码 $this->set('posts', $this->Post->findAll());这样, 视图 index.thtml 中的数组型变量 $posts 通过模型类 Post 拿到了数据库表 posts 的所有记录
    • 是设定 index.thtml 视图中的变量其名为 posts 的值
    • 而其中 $this->Post 按照命名约定是 Post 模型类
  • 同样, 请求 http://.../posts/view/3 会找到控制类 PostsController 的动作 view 来处理, 用 app/views/posts/view.thtml 响应返回显示, 不过还带有动作参数 $id 值为 3
    • 动作 view 中的代码 $this->set('posts', $this->Post->read(null, $id)); 设定 view.thtml 视图中的变量 $posts
    • 视图 view.thtml 中的代码如 echo $posts['Post']['title'] 显示表 posts 中记录的 id 为 3 的字段 title 的值(温馨提醒中间 Post 是大写的 P)
  • 动作 edit 和 add 都要用到代码 $this->Post->save($this->data) 通过模型类 Post 保存控制类的参量 $this->params 所拥有的数据
    • $this->data 是 $this->params['data'] 的别名, 指表单(form) 通过提交方式 POST 上来的数据

.:: $html ::.

举例

  • 或许超链接更简单了 echo $html->link('超链接文字', '超链接地址')

    • 如果当前视图在 app/views/posts/ 目录中, '超链接地址'是这个当前视图目录的相对地址
  • 插入图片不难 echo $html->image('图片地址', array('alt'=>"", 'border'=>"0"))用图片作为超链接稍复杂点, 详细方法参数说明请查 Cake 手册 echo $html->link($html->image('图片地址'), '超链接地址', null, null, false)
    • 图片放在 app/webroot/img/ 目录中, '图片地址'是这个图片存放目录的相对地址
    • 在数组里放图片链接的属性

Cakephp中使用JavaScriptHelper来引入js文件的更多相关文章

  1. 1.在html中引入js文件和Jquery框架

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Vue在单独引入js文件中使用ElementUI的组件

    Vue在单独引入js文件中使用ElementUI的组件 问题场景: 我想在vue中的js文件中使用elementUI中的组件,因为我在main.js中引入了element包和它的css,并挂载到了全局 ...

  3. vue脚手架使用swiper /引入js文件/引入css文件

    1.安装vue-cli 参考地址:https://github.com/vuejs/vue-cli 如果不使用严格语法需要在后三项打no:(加了挺头疼的,老是报错,但是对自己的代码规范性也是有很大的帮 ...

  4. jsp引入js文件

    转自:http://blog.csdn.net/ppzhangj/article/details/7859628 1)引入的js文件出错, 检查方法:将Js的内容写在当前的页面的<script& ...

  5. vue引入swiper vue使用swiper vue脚手架使用swiper /引入js文件/引入css文件

    vue引入swiper  vue使用swiper  vue脚手架使用swiper /引入js文件/引入css文件 ------------------------------------------- ...

  6. 使用其他服务器引入JS文件

    使用其他服务器引入JS文件,1,减轻服务器压力2,速度快3,可以缓存 cdnjs库,更新比较快https://cdnjs.com/ cdn库 引入JS文件如:jquerybootcdn : https ...

  7. vue项目 引入js文件

    例如我想将laydate.js引到vue项目中 将用到的js文件放到static文件夹内,在项目的根目录下的index.html内引入 <script src="static/js/l ...

  8. 防止多次引入js文件导致的重复注册点击事件

    前端代码中的js文件如果是动态引入的或者是某个事件操作进行注册的,那么重复的引入js文件或者多次触发注册事件会导致事件多次进行注册,造成不必要的麻烦,所以需要在每次注册之前将先前的事件进行取消,下面以 ...

  9. vue引入js文件时报This dependency was not found:错误

    vue引入js文件时报This dependency was not found:错误 使用了很多方法,原来是这么小的问题,特此记录 解决办法 添加 ./

随机推荐

  1. Web Server 与 App Server

    Web Server 常见的Web Server有Apache Server与Nginx. Apache Http Server是Apache软件基金会下的一个项目,是一款开源的HTTP服务器软件(它 ...

  2. C语言 · 字符串的展开

     算法训练 字符串的展开   时间限制:1.0s   内存限制:256.0MB      在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d ...

  3. 教你如何禁用U盘、屏蔽USB端口的三种方法

    如果想禁止所有U盘的使用,则可以通过修改注册表来实现. 打开”运行“对话框,输入命令“Regedit”进入注册表界面.   依次展开“HKEY_LOCAL_MACHINE”→“SYSTEM”→“ Cu ...

  4. js 日期格式化函数

    直接上代码: // 日期格式化函数 // yyyy/MM/dd hh:mm:ss SSS ⇒ "2017/05/16 09:24:20 850" //"yyyy/M/d ...

  5. python 查找文件内容

    输入查找的文件夹路径,要查找的内容关键字(可以指定多个),要查找的文件类型(可以是多个),搜索出符合条件的文件,并记录所有符合条件的行号及行内容. 写的感觉有点冗余,但好歹还能使用^-^,主要是方便手 ...

  6. WebForm发送邮件

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Ne ...

  7. SpringBoot(三):文件下载

    SpringBoot(三):文件下载 2017年08月02日 10:46:42 阅读数:6882 在原来的SpringBoot–uploadfile项目基础上添加文件下载的Controller: @R ...

  8. Spring,hibernate,struts的面试笔试题(含答案)

    Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久 ...

  9. android 分辨率

    1.术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托罗拉milestone手机是3.7英寸 A ...

  10. 关于Unity中蒙皮网格和布料的使用

    所以物体的要绘制出来就必须要有网格组件+材质属性,如果还需要其他特效或丰富内容的话,还可以再加组件. 蒙皮网格和布料 1: 例如要模拟衣服,随风摆动,模拟布料需要用到蒙皮网格和布料;2: 蒙皮网格可以 ...