詹姆斯瓦茨 / cake-markup-language
CakePHP 插件,通过用基于 XML 的标记替换过程式 PHP 代码来进一步抽象视图层
Requires
- php: >=5.3.0
- composer/installers: *
This package is not auto-updated.
Last update: 2024-09-24 01:07:41 UTC
README
Cake Markup Language 是一个 CakePHP 插件,通过用基于 XML 的标记替换过程式 PHP 代码来提供视图层的抽象。
使用 CakeML 可以帮助您保持视图代码的整洁和有序,同时通过限制视图层中的应用程序逻辑来维护严格的 MVC 规范。
该插件的主要功能包括
- 熟悉语法: CakeML 标记使用的语法与 XHTML 相同,因此无需学习新的格式或模式,任何能够突出显示 XML 的 IDE 或代码编辑器也将为您视图文件提供同样的功能。
- 为设计师准备: 由于语法通用,视图文件对设计师和非开发人员更加易用,使他们能够在不具备任何先验技术知识的情况下自行引入代码。
- 简单模板化: 该插件提供基本的模板逻辑,例如 if/elseif/else 条件语句、foreach 循环和 switch,以及 CakePHP 中用于创建动态内容的视图块。
- 内部调试: 通过在解析器组件上启用调试模式,您可以在视图处理之前快速查看编译后的视图,在渲染为输出之前对生成的代码有一个清晰的了解。
- 设计可扩展性: 由于 CakeML 中使用的标记标签被组织在公共命名空间下,您可以轻松地从 CakePHP 插件中导入自己的自定义或 第三方 命名空间,从而允许您在其他应用程序中重用标签。
- 即插即用: 使用该插件就像包含解析器组件一样简单,这不会限制您继续使用正常的 ".ctp" 文件,因为您甚至可以在同一个控制器中使用两种格式为不同的视图。
- 兼容性: 目前在 CakePHP 中所有视图功能仍然可用,例如 主题、布局、元素、内容块 和 助手,布局和元素也可以包含 CakeML 标记。
要开始使用 Cake Markup Language,只需在您的控制器中包含插件中的 ParserComponent 即可,例如
public $components = array( 'Cml.Parser' => array( 'ignoreAction' => array('example') // allow "example" action to continue using "example.ctp" ) );
使用 CakeML 的视图、布局和元素文件使用 ".cml" 扩展名保存,以区别于标准 ".ctp" 模板。要创建视图,只需包含 CakeML 标记以及您的静态 HTML、CSS 和 JavaScript 客户端代码。
<div id="example"> <cake:out value="Hello World" /> </div>
您还可以使用 php 命名空间中的条件语句以及视图变量来创建动态内容。例如,通过在控制器中设置 $this->set("text", "Hello World");
,您可以在视图中读取它,使用 %{variable}
显示它,如下所示
<php:if expr="!empty(%{text})"> <cake:out value="%{text}" /> <php:else /> <cake:out value="Nothing here" /> </php:if>
但是,也可以通过使用 default 属性来实现相同的效果
<cake:out value="%{text}" default="Nothing here" />
更复杂的操作包括 for、foreach 和 while 循环,它们提供了快速模板化的能力,包括自动声明变量和空数组的默认值。
<php:foreach var="products" default="No products found"> <cake:out value="%{COUNT}. %{KEY} = "%{VALUE}"" safe="true" /> </php:foreach>
cake 命名空间还提供许多常用标签,例如包含 元素
<cake:element name="sidebar" options="['example' => %{value}]" />
您还可以轻松创建 链接,以下示例使用 #{literal}
来加载翻译字符串,以及包含额外的 HTML 内容。
<cake:link value="#{Read more}" url="['controller' => 'Posts', 'action' => 'view', %{postId}]" /> <cake:link url="['controller' => 'Posts', 'action' => 'view', %{postId}]"> <span>#{Read more}</span> </cake:link>
最重要的功能可能是表单,它也可以快速生成。
<cake:form model="Example" submit="#{Send}" options="['action' => 'add']"> <cake:input field="Example.column" options="['type' => 'number']" /> </cake:form>
cake 命名空间还允许您访问任何核心或第三方助手,这意味着使用现有的助手不需要进行任何更改。
<cake:helper name="Example" get="someProperty" /> <cake:helper name="Example" call="someFunction" args="['Hello World']" set="something" /> <cake:out value="%{something}" safe="0" />
要快速上手,请查看快速入门或Hello World教程,这些教程可在文档中找到。
要求
- CakePHP 2+
- PHP 5.3+
文档
完整的文档包含在插件中,可在本仓库的Docs目录中找到。
支持
有关支持、错误和功能请求,请使用本仓库的问题部分。
贡献
如果您想向代码库贡献新功能、增强功能或错误修复,请按照以下步骤操作
- 如果您还没有,请创建一个GitHub账户
- 然后,将Cake Markup Language仓库分叉到您的账户
- 从您的分叉仓库中的develop分支创建一个新的分支
- 修改现有代码或添加新代码到您的分支,确保您遵循CakePHP 编码标准
- 修改或添加单元测试,以确认代码的正确功能(需要PHPUnit 3.5+)
- 考虑使用CakePHP Code Sniffer来检查代码质量
- 准备好后,向主仓库提交一个拉取请求
在代码合并之前,可能会有一些关于您对仓库的贡献的讨论,所以如果需要,请准备好提供有关您贡献的反馈。
可以在这里找到对Cake Markup Language做出贡献的列表这里。
许可证
版权所有 2013 James Watts (CakeDC)。保留所有权利。
在MIT许可证下授权。包含在本仓库中的源代码的再分发必须保留每个文件中的版权声明。
致谢
特别感谢Larry Masters,CakePHP的创始人,以及整个CakeDC团队对他们的反馈和支持。