GVKun编程网logo

CakePHP – 使用$this-> Html-> link with $this-> Html-> image …生成ascii而不是实际的HTML

2

在本文中,我们将带你了解CakePHP–使用$this->Html->linkwith$this->Html->image…生成ascii而不是实际的HTML在这篇文章中,同时我们还将给您一些技巧,以

在本文中,我们将带你了解CakePHP – 使用$this-> Html-> link with $this-> Html-> image …生成ascii而不是实际的HTML在这篇文章中,同时我们还将给您一些技巧,以帮助您实现更有效的a:link 和 .nav-link 中的颜色冲突、CakePHP 2.x CookBook 中文版 第三章 入门 之 CakePHP 的文件夹结构、CakePHP 2.x CookBook 中文版 第三章 入门 之 CakePHP 的结构、CakePHP 2.x CookBook 中文版 第四章 CakePHP 概述

本文目录一览:

CakePHP – 使用$this-> Html-> link with $this-> Html-> image …生成ascii而不是实际的HTML

我正在使用cakePHP 2.3.0.我在手册中搜索了很长一段时间,但我还没有找到答案.我正在尝试使用$this-> Html->链接,以及$this-> Html->图片.我正在尝试创建单击图像的功能.有关为什么生成引号的ascii渲染的任何想法?

这是我的视图ctp中的代码段代码集:

echo $this->html->tableCells(
        array(
            array(
                array (
                   $this->Html->link($myActivity['Activity']['name'],array('controller' => 'users','action' => 'edit'),array('title' => '')),array('align' => 'left')),array ($myActivity['Activity']['status'],array ($myActivity['Activity']['any_messages'],$date2,array ($this->Html->link(
                            $this->Html->image('pencil.jpg',array('alt' => 'Edit','border' => '0','width' => '25')),'action' => 'add'),array('title' => ''))
                    ),$this->Html->image('trashcan.jpg',array('alt' => 'Delete',$this->Html->image('copy.png',array('alt' => 'copy',)
         )  
      );

下面是上面代码的实际HTML结果.如您所见,生成的HTML显示引号(“)和”<“的ascii版本和'>‘:

<tr>
    <td align="left">
        <a href="/activities/index.PHP/users/add" title="">Running</a>
    </td>
    <td align="left">Live</td>
    <td align="left">no</td>
    <td>02/18/13</td>
    <td>
        <a href="/activities/index.PHP/users/edit" title="">&lt;img src=&quot;/activities/app/webroot/img/pencil.jpg&quot; alt=&quot;Edit&quot; border=&quot;0&quot; width=&quot;25&quot; /&gt;</a>
    </td>
    <td>
        <img src="/activities/app/webroot/img/trashcan.jpg" alt="Delete" border="0" width="25">
    </td>
</tr>

以下是我希望HTML看起来像:

<tr>
    <td align="left">
        <a href="/activities/index.PHP/users/add" title="">Running</a>
    </td>
    <td align="left">Live</td>
    <td align="left">no</td>
    <td>02/18/13</td>
    <td>
        <a href="/activities/index.PHP/users/edit" title="">
            <img src="/activities/app/webroot/img/pencil.jpg" alt="Edit" border="0" width="25"></a>
    </td>
    <td>
        <img src="/activities/app/webroot/img/trashcan.jpg" alt="Delete" border="0" width="25">
    </td>
</tr>
您需要将escape选项添加到link()调用的options数组中.将其设置为false,如下所示:
echo $this->Html->link(
    $this->Html->image('mydog.jpg'),'/lol.html',array('escape' => false)
);

a:link 和 .nav-link 中的颜色冲突

如何解决a:link 和 .nav-link 中的颜色冲突

我自己使用了 bootstrap css 和 css 样式表。对于以下部分,

  1. <nav class="navbar navbar-expand-md">
  2. <button class="navbar-toggler navbar-dark" type="button" data-toggle="collapse" data-target="#main-navigation">
  3. <span class="navbar-toggler-icon"></span>
  4. </button>
  5. <div class="collapse navbar-collapse" id="main-navigation">
  6. <ul class="navbar-nav">
  7. <li class="nav-item">
  8. <a class="nav-link" href="#Home">Home</a>
  9. </li>
  10. <li class="nav-item">
  11. <a class="nav-link" href="#About">About</a>
  12. </li>
  13. <li class="nav-item">
  14. <a class="nav-link" href="#Contact">Contact</a>
  15. </li>
  16. </ul>
  17. </div>
  18. </nav>

我希望“主页、关于、联系人”是黑色的,而不是像我的其他链接那样深红色。所以在我的css文件中,我写

  1. a:link,a:visited,a:hover,a:active{
  2. color:darkred;
  3. }
  4. .nav-link {
  5. color: black;
  6. }

但结果它们仍然是深红色。如何解决此冲突?

解决方法

我通过更改为

来修复它
  1. .navbar .nav-link {
  2. color: black;
  3. }

CakePHP 2.x CookBook 中文版 第三章 入门 之 CakePHP 的文件夹结构

CakePHP 2.x CookBook 中文版 第三章 入门 之 CakePHP 的文件夹结构

CakePHP 的文件夹结构

在你下载并解压 CakePHP 之后,你将拥有如下文件和文件夹结构:

  • app
  • lib
  • vendors
  • plugins
  • .htaccess
  • index.php
  • README

你要注意三个主要的文件夹:

  • app 文件夹是你工作的主要位置:应用程序文件将放在这儿。
  • lib 文件夹是我们工作的位置。你个人 不要 编辑这个文件夹下的内容。如果你编辑了这些核心文件,我们不会提供任何帮助。
  • 最后,vendors 文件夹是放置你需要在你的 CakePHP 应用程序中使用的第三方 PHP 库的地方。

app 文件夹

CakePHP 的 app 文件夹是你进行绝大多数应用程序编程工作的所在。让我们近距离看看 app 文件夹内的东东。

Config掌管了 CakePHP 所用的配置文件(就几个)。数据库连接的详细信息配置、自举配置、内核配置等配置文件存放在这儿。Controller包含你的应用程序的控制器和它们的组件。Lib包含那些非来自第三方或者外部供应商的第一方库。这允许你分隔你的原始内部库与供应商库。Locale存储国际化字符串文件。Model包含你的应用程序的模型、行为和数据源。Plugin包含插件包。tmp

这里俏皮话 CakePHP 的临时数据。真实数据存储依赖你如何配置 CakePHP,但这个文件夹通常用来存储模型描述、日志,有些时候还存储 session 信息。

确定这个文件夹存在,并且是可写的,否则你的应用程序的运行将受到严重影响。在 debug 模式下,出现这种情况,CakePHP 将发出警告。

Vendor第三方类或库放在这儿。这样一来,就可以很容易的使用 App::import(‘vendor’, ‘name’) 函数访问这此类或库。敏感的观察者将注意到这看起来有点多余,因为我们的顶级文件夹结构中也有一个 vendors 文件夹。 两者之间的不同是在我们发布管理多个应用程序和更复杂的系统设计的时候。View视觉文件放在这儿:元素、错误页、助手、布局,还有视图文件。webroot在一个产品安装中,这个文件夹将作为应用程序的文档根目录。这些文件夹还是放置 CSS 样式表、图片或者 JavaScript 文件的地方。

CakePHP 2.x CookBook 中文版 第三章 入门 之 CakePHP 的结构

CakePHP 2.x CookBook 中文版 第三章 入门 之 CakePHP 的结构

CakePHP 的结构

CakePHP 包括控制器、模型和视图类,还包括一些能使 MVC 编程更快更容易的附加的类和对象。组件、行为和助手就是这样的类,它们提供扩展和利用,以使你能在基于 MVC 类的应用程序中快速添加功能。 现在我们将保持在一个较高水平上,找一找如何使用这些工作的详细信息。

应用程序扩展

每个控制器、助手和模型都有一个父类,你可以用它来定义应用程序内的变化。AppController (位置在/app/Controller/AppController.php)、 AppHelper (位置在 /app/View/Helper/AppHelper.php)和 AppModel (位置在 /app/Model/AppModel.php)是放置你要在所有控制器、助手和模型中共享的方法的好地方。

尽管它们不是类或者文件,路由仍然在 CakePHP 请求中充当重要角色。路由定义告诉 CakePHP 如何将 URL 映射到控制器动作。默认的行为假定 URL /controller/action/var1/var2 映射到 Controller::action($var1, $var2),你可以使用路由自定义 URL 以及它们在你的应用程序里如何诠释。

一些应用程序的特性值得整体打包。插件是完成某些特定目的的模型、控制器和视图包,它们能跨越多个应用程序。用户管理系统或者简单的博客比较适用于 CakePHP 插件。

控制器扩展 (“组件”)

组 件是在控制器逻辑中提供帮助的类。如果你有一些逻辑想要在多个控制器(或者应用程序)间共享,组件通常是比较合适的。作为例子,内核的 EmailComponent 类建造了一个创建和发送邮件的元件。 相对于在单个控制器内编写一个方法实现这个逻辑,你能打包这个逻辑并使其可以共享。

控制器也适合回调,这些回调对你也很有用,某些情况下你需要在 CakePHP 的核心操作间插入一些逻辑。有效的回调包括:

  • beforeFilter(),在全部控制器动作逻辑前执行
  • beforeRender(),在控制器逻辑之后、视图渲染之前执行
  • afterFilter(),在所有控制器逻辑(包括视图渲染)之后执行。 afterRender() 和 afterFilter() 有所不同,直到你在控制器动作中手动调用 render(),并在调用后已经包含了一些逻辑。

模型扩展 (“行为”)

简单地说,行为在模型间添加公用的功能。例如,你在树形结构中存储用户数据,你可以指定你的 User 模型的行为像一个树,并且在你的树结构中提供删除、添加和移动节点的功能。

模 型总是支持从其它类调用数据源。数据源是一个抽象的概念,它能使模型以一致的方式操控不同类型的数据。CakePHP 应用程序的主要数据来源常常是数据库,你可能会写一个允许你的模型提供 RSS feeds、CSV 文件、LDAP 分支或者 iCal 事件的附加的数据源。数据源允许你在不同的来源中整合数据:相对于 SQL 连接的限制,数据源允许你让你的 LDAP 模型整合许多 iCal 事件。

和控制器一样,模型也包含回调:

  • beforeFind()
  • afterFind()
  • beforeValidate()
  • beforeSave()
  • afterSave()
  • beforeDelete()
  • afterDelete()

这些方法的名字足以让你知道它们是做什么的。你能在 模型 一章找到更详细的信息。

视图扩展 (“助手”)

助手是在视图逻辑中提供帮助的类。与组件之于控制器类似,助手允许视觉逻辑被访问并在多个视图间共享。核心助手中之一,JsHelper,使得在视图中使用 Ajax 请求更容易,并且提供 jQuery(默认)、Prototype 和 Mootools 支持。

更多的应用程序使用视图代码的片断提供复用。CakePHP 使布局和元素中的视图代码更易于复用。默认的,每个视图由控制器放置在一个布局中渲染。当很小的内容碎块要在多个视图内自用时使用元素。

CakePHP 2.x CookBook 中文版 第四章 CakePHP 概述

CakePHP 2.x CookBook 中文版 第四章 CakePHP 概述

CakePHP 概述

欢迎来到 CakePHP Cookbook,这是一本使用 CakePHP web 应用程序框架开发一块蛋糕的的手册!

本手册假定你了解 PHP,并且有面向对象编程(OOP)方面的基础知识。 框架中的不同功能使用了不同的技术 —— 类似于 SQL、JavaScript 和 XML —— 本手册不准备讲解这些技术,仅仅说明其在相关上下文中如何使用。

  • 什么是 CakePHP?它如何使用?
  • 理解 模型 - 视图 - 控制器
  • 从哪儿获取帮助

什么是 CakePHP?它如何使用?

CakePHP 是一个 免费的 , 开源的 , 快速发展的 PHP 框架 。 它是创建 web 应用的基本程序结构。我们的主要目标是让你能够在一个结构上快速开始工作 —— 不需要太复杂。

CakePHP 从单调的 web 开发中解脱出来。我们为你提供开始编码的全套工作,包括你的应用程序的具体逻辑。 代替每次重复发明轮子的是坐下来开始一个新项目,检出 CakePHP 的代码副本然后鼓起勇气开始编程。

CakePHP 拥有活跃的 CakePHP has an active 开发团队 和社区,给项目带来巨大的价值。除了让你摆脱重复发明轮子,使用 CakePHP 还意味着你的应用程序的核心是易于测试并不断提高的。

以下是一些当你使用 CakePHP 时能享受到的特性的快速列表:

  • 活跃、友好的 社区
  • 富有弹性的 许可
  • 兼容 PHP 5.2.8 及更高版本。
  • 整合的数据库 CRUD 操作。
  • 应用程序 脚手架.
  • 代码生成。
  • MVC 设计风格。
  • 清晰的请求颁发、自定义的 URL 和路由。
  • 内置的 校验.
  • 快速灵活的 模板 (PHP 语法,带有助手)。
  • Ajax、JavaScript、HTML 表单等等方面的视图助手。
  • Email、Cookie、安全、Session 和请求处理等的组件。
  • 灵活的 ACL.
  • 数据清除。
  • 灵活的 缓存.
  • 本地化。
  • 几乎不需要对 Apache 进行配置就可以在任意站点目录内工作。

理解 模型 - 视图 - 控制器

CakePHP 遵循 MVC 软件设计模式。 使用 MVC 编程将应用程序分隔为三部分:

模型层

模型层是在你的应用程序中实现商业逻辑的那一部分。 它负责检索数据并将其转换成对你的应用程序有意义的概念。包括加工、校验、连接或者与数据处理相关的其他任务。

乍一看,模型对象可以被当成与你的应用程序所使用的数据交互的第一层。 但总体来说,它们是贯穿了你的应用程序实现的主体概念。

在社会网络中,模型层关注的任务包括保存用户数据、保存朋友关系、存储和检索用户照片、为寻找新的朋友提供建议等。此时,模型对象可以被当成 “Friend”、”User”、”Comment” 或者 “Photo”.

视图层

视图渲染可视化数据。它被从模型中分离出来,负责使用它可用的信息,产生应用程序中需要的可视化接口。

例如:当模型层返回一个数据集,视图就用它渲染一个包含这些数据集的 HTML 页面。或者为其他需要提供一个 XML 格式的结果。

视图层不仅是数据的 HTML 或者文本表示,它还能用于传送你需要的各种格式,比如视频、音乐、文档或者你能想到的其他所有格式。

控制器层

控制器层处理来自用户的请求。它借助模型和视图层渲染一个回应。

控制器可以被看作一个照看完成一个任务的全部所需资源并委托给正确人员的管理员。它等待客户端的请求,根据认证或授权规则检验其有效性,将数据委托给模型进行读取或处理,选择客户端所期望的数据的正确表现形式,并最终将此次渲染委托给视图层。

CakePHP 请求生命周期

插图: 1: CakePHP 中的标准 MVC 请求

标准的 CakePHP 请求生命周期起始于一个用户请求应用程序中的一个页或者资源。分发器先计算这个请求,并选择一个正确的控制器对象处理它。

一旦请求到达控制器,它将请求传递给模型层计算所有的数据,根据需要进行读取或保存操作。 在此次传递结束后,控制器将来自模型的数据继续委托给正确的视图对象,生成输出结果。

最后,输出一生成,它就将其渲染给用户。

应用程序中的每个请求几乎都遵循这个基本模式。随后我们将向 CakePHP 加入一些具体的详细内容,在我们继续进行时,记住这一点。

好处

为 什么要使用 MVC?因为它是一种经过实践证明的有效的软件设计模式,可以使应用程序变成为可维护的、模块化的、快速的开发包。 将应用程序任务分解为分隔模型、视图、控制器任务,使得创建应用程序更容易。 新特性更易于添加,修改旧特性也很容易。模块化和分离设计还允许程序员和设计师同时工作,能够快速开发原型。 分离还允许程序员在改变程序的一个部分时不影响其他部分。

如果你从没有用这种方法创建过应用程序,需要你花费一些时间学习,但是我们相信一旦你使用 CakePHP 建立了第一个应用程序,你就不会再想使用其他方式了。

要开始你的第一个 CakePHP 应用程序, 现在就试着建立一个博客 吧。

从哪儿获取帮助

CakePHP 官方网站

http://www.cakephp.org

CakePHP 官方网站总是访问的最佳选择。它包括常用的开发者工具、截屏、捐赠和下载的链接。

Cookbook

http://book.cakephp.org

本手册将是你获取答案的首选。和许多开源项目一样,我们经常会有新的朋友。试着自己先回答自己的问题。答案可能会有点慢,但是会保存很久 —— 你还能帮我们减轻负担。手册和 API 都有在线版本。

面包店

http://bakery.cakephp.org

CakePHP 面包店是 CakePHP 所有事物的集结地。可以从中找到教程、案例和代码示例。一旦你熟悉了 CakePHP,登录论坛并分享你的知识,就可以名利双收:)

API

http://api20.cakephp.org/

直接源自内核程序员的 API 是最全面的文档,包含了此框架的全部细节和内部工作原理。它直接来自代码参考,会带给你更强劲的动力。

测试用例

如果你觉得 API 提供的信息仍然不够,可以浏览随 CakePHP 一直提供的测试用例。它们为每个类的功能和数据成员的用法提供了实际的例子。

lib/Cake/Test/Case

IRC 频道

IRC Channels 在 irc.freenode.net:

  • #cakephp – 一般性讨论
  • #cakephp-docs – 文档
  • #cakephp-bakery – 面包店

如果你遇到了障碍,在 CakePHP IRC 频道向我们发牢骚。 来自开发团队的成员常常会在那,尤其是北美或南美的用户常常会在那泡一整天。 我们喜欢听到你的声音,如果你需要帮助,想要在你所在的区域寻找用户,或者想捐赠你那辆全新的运动型轿车。

Google 小组

http://groups.google.com/group/cake-php

CakePHP 还有一个非常活跃的 Google 小组。 它是找到归档答案、常见问题和当前问题的回复的上佳资源。

CakePHP 问答

http://ask.cakephp.org/

简单地注册、登录并提问。等待你的答案到来,并且选择正确的回复。你可以展示、注释、为以前的提问和解决方案投票。

关于CakePHP – 使用$this-> Html-> link with $this-> Html-> image …生成ascii而不是实际的HTML的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于a:link 和 .nav-link 中的颜色冲突、CakePHP 2.x CookBook 中文版 第三章 入门 之 CakePHP 的文件夹结构、CakePHP 2.x CookBook 中文版 第三章 入门 之 CakePHP 的结构、CakePHP 2.x CookBook 中文版 第四章 CakePHP 概述的相关信息,请在本站寻找。

本文标签: