rifer/test-update-cml

CakePHP插件,通过用基于XML的标记替换过程式PHP代码来进一步抽象视图层

安装: 7

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 9

公开问题: 0

类型:cakephp-plugin

dev-beta 2015-09-16 08:43 UTC

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"模板区分开来。要创建视图,只需包含CSSJavaScript客户端代码以及静态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" />

更复杂的操作包括forforeachwhile循环,它们提供了快速模板化的能力,包括自动声明变量和空数组的默认值。

<php:foreach var="products" default="No products found">
	<cake:out value="%{COUNT}. %{KEY} = &quot;%{VALUE}&quot;" 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许可证授权。包含在本存储库中的源代码的分发必须保留每个文件中的版权声明。

致谢

特别感谢拉里·玛斯特斯CakePHP的创始人,以及整个CakeDC团队对他们的反馈和支持。