rifer / test-update-cml
CakePHP插件,通过用基于XML的标记替换过程式PHP代码来进一步抽象视图层
Requires
- php: >=5.3.0
- composer/installers: *
This package is not auto-updated.
Last update: 2024-09-28 18:26:36 UTC
README
蛋糕标记语言是一个CakePHP插件,它通过用基于XML的标记替换过程式PHP代码来抽象视图层。
使用CakeML可以帮助保持您的视图代码干净有序,同时通过限制视图层中的应用逻辑来维护严格的MVC约定。
该插件的主要功能包括
- 熟悉的语法:用于CakeML标记的语法与XHTML相同,因此无需学习新的格式或模式,任何能够突出显示XML的IDE或代码编辑器也能突出显示您的视图文件。
- 面向设计师:由于语法通用,视图文件对设计师和非开发者更加易于访问,允许他们在不具备任何先验技术知识的情况下自行编写代码。
- 简单模板:该插件提供基本的模板逻辑,例如if/elseif/else条件语句、foreach循环和switch,以及CakePHP中已提供的视图块,用于创建动态内容。
- 内部调试:通过在解析器组件上启用调试模式,您可以在处理之前快速查看编译的视图,在渲染为输出之前清楚地了解生成的代码。
- 设计可扩展性:由于在CakePHP插件中,用于CakeML的标记标签都分组在公共命名空间下,您可以从CakePHP插件中轻松导入自己的自定义或第三方命名空间,从而允许您在应用程序中重用标记。
- 即插即用:使用该插件就像包含解析器组件一样简单,这不会限制您继续使用正常的".ctp"文件,您甚至可以在同一个控制器中的不同视图中同时使用这两种格式。
- 兼容性:目前所有在CakePHP中的视图功能仍然可用,例如主题、布局、元素、内容块和辅助函数,同时布局和元素也能够包含CakeML标记。
要开始使用蛋糕标记语言,只需在您的控制器中包含来自插件的ParserComponent即可,例如
public $components = array( 'Cml.Parser' => array( 'ignoreAction' => array('example') // allow "example" action to continue using "example.ctp" ) );
使用CakeML的视图、布局和元素文件使用".cml"扩展名保存,与标准".ctp"模板区分开来。要创建视图,只需包含CSS和JavaScript客户端代码以及静态HTML和CakeML标记。
<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: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账户
- 然后,从您分叉的存储库中的develop分支分叉“蛋糕标记语言”存储库到您的账户
- 从您分叉的存储库中的develop分支创建一个新分支
- 修改现有代码,或在您的分支中添加新代码,确保您遵循CakePHP编码标准
- 修改或添加单元测试,以确认您的代码的正确功能(需要PHPUnit 3.5+)
- 考虑使用CakePHP Code Sniffer来检查代码质量
- 准备就绪后,向主存储库提交拉取请求
在合并任何代码之前,可能需要对您对存储库的贡献进行一些讨论,因此请准备在需要时提供反馈。
可以在这里找到对Cake Markup Language的贡献者列表此处。
许可证
版权所有2013詹姆斯·沃茨(CakeDC)。保留所有权利。
根据MIT许可证授权。包含在本存储库中的源代码的分发必须保留每个文件中的版权声明。