molajo / molajito
Molajito 视图渲染用于 PHP 应用
Requires
- php: >=5.4
- commonapi/exception: dev-master
- commonapi/render: dev-master
- molajo/resources: dev-master
This package is auto-updated.
Last update: 2024-09-08 05:06:58 UTC
README
======= Molajito 渲染包
Molajito 是一个模板环境,面向那些希望专注于标记而非编程的前端开发者。它定位视图,注入转义数据,与事件处理集成,提供对语言字符串的翻译支持,还有更多。
示例
此包内包含一个网站的示例,包括 首页、博客、文章、联系、关于 页面。要查看示例,请配置 Apache 主机指向此 样本 / 公共 文件夹,并使用浏览器访问主机。
基本流程
Molajito 通过包含一个作为渲染输出的 主题 文件来启动渲染过程。该 theme
包含 Molajito 在解析期间发现的 包含语句,用于标识在该位置要渲染哪个 view
。
Molajito 使用三种不同类型的 `views`
-
页面 视图定义布局。一个网站通常有不同的布局,页面视图对此非常有用。Molajito 不将数据传递到
页面视图
,它只包含页面视图
文件。 -
模板 视图定义页面的一个特定区域,例如一个
模板视图
可以渲染导航菜单、博客文章或作者简介。Molajito 在渲染过程中将数据传递到模板视图
以支持渲染。 -
包装 视图以特定方式 包装 从
模板视图
生成的渲染输出。例如,一个包装可以包含在<article>
、<footer>
或<header>
内容特定的 HTML5 元素中。包装也可以用来为内容实现某些视觉效果,例如在一个具有alert
类的 div 中包含一条消息。
您还可以使用 包含语句
来定义 位置,这些位置是占位符,可以与一个或多个 模板视图
关联。例如,您可能需要一个博客的 侧边栏位置
,该位置可以被网站构建者配置。
主题
主题是第一个渲染输出,因此驱动渲染过程。通常,一个 主题
定义必要的 CSS 和 JS 语句。
Molajito 将一个名为 $this->runtime_data
的数据对象注入到主题中。以下示例中可以看到,Molajito 传递了在页面包含语句中使用的 $this->runtime_data->page_name
值。
您可以将数据添加到 $this->runtime_data
中,以便在渲染时可用。在这个例子中,使用 site_name
来渲染 title
。
在下面的 theme
中,您将找到 page
、template
和 wrap
视图的 include statements
。
<!doctype html> <html class="no-js" lang="en"> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <title><?= $this->runtime_data->site_title ?></title> <link rel="stylesheet" href="/css/custom.css"/> </head> <body> <div class="page-wrap"> {I template=Navbar wrap=Nav I} {I Breadcrumbs I} {I page=<?= $this->runtime_data->page_name ?> I} </div> {I Footer wrap=Nav I} </body> </html>
包含语句
Molajito 使用 include statements
来定义特定视图应该渲染的位置。Include statements
可以在任何 theme
或 template
中定义,这有助于创建可重用的模板,以便在多个地方引用,从而保持您的视图 DRY(不要重复自己)并易于维护。Molajito 在渲染每个视图后继续解析渲染输出,直到不再找到 include statements
。
包含语法很简单 {I type=Name I}
{I
标记包含语句的开始;type=
设置为template
或page
;如果省略,Molajito 首先假设它是position
,然后查找同名template
;Name
识别与指定类型关联的视图;I}
标记包含语句的结束。
可以通过添加命名对属性来向 include statement
添加额外属性 {I template=Templatename class=current,error dog=food I}
。
页面
{I page=<? $this->runtime_data->page_name ?> I}
Themes
通常定义 page views
。通过 $this->runtime_data->page_name
对象将 page_name
传递到 theme
中。然而,page view
可以定义在任何地方。重要的是要记住,Molajito 简单地包含 page view
文件,而不传递数据。
以下是一个博客文章的 page view
示例。页面布局需要三个 template views
:帖子、评论和分页模板。页面布局还包括一个 sidebar
位置。如果没有名为 sidebar
的位置,Molajito 将搜索同名的 `template view`。
<div class="row"> <div class="large-9 push-3 columns"> {I template=Post I} {I template=Comments I} {I template=Paging I} </div> <div class="large-3 pull-9 columns"> {I Sidebar I} </div> </div>
位置
{I Sidebar I}
如果从 include statement
中省略了 type=
,Molajito 首先搜索具有该名称的 position
。如果没有找到具有该名称的 position
,Molajito 将继续搜索同名的 template view
。
您可以通过为 $type = 'page' 或 $type = 'theme' 定义数组中的值来定义与位置关联的 template views
。Molajo 将按该顺序检查位置。如果找到位置,Molajito 将为定义的每个 template view
插入 (I template=Name I}
值。
$this->plugin_data->render->extension->$type->parameters->positions
模板
{I template=Templatename I}
Molajito 将数据注入到 Template view
以支持渲染。与 Theme
一样,Molajito 会传递 $this->runtime_data
对象,您可以使用它来确保特定的数据可用于渲染。
配置 template view
有两种方式。
-
Custom.php - Molajito 将
view
注入$this->query_results
和this->runtime_data
,但视图必须处理循环,如果需要的话。 -
Header.php、Body.php 和 Footer.php - Molajito 将
Body.php
注入$this->row
和this->runtime_data
,每次为每一行注入一次。如果存在Header.php
,它将获取第一行。如果存在Footer.php
,它将获取最后一行。
以下是一个典型的 template view
Body.php 文件示例。
<h3> <a href="<?= $this->row->current_url ?>"> <?= $this->row->title ?> </a> </h3> <h6>Written by: <a href="<?= $this->runtime_data->route->contact ?>"> <?= $this->row->author ?> </a> on <?= $this->row->published ?>. </h6> <?php if (isset($this->row->video) && $this->row->video !== '') { ?> {I template=video link=<?= $this->row->video ?> I} <?php } ?> <?= $this->row->content; ?>
包装
{I template=Templatename wrap=Wrapname I}
要包装 template view
,请将 wrap=Wrapname
元素添加到 include statement
中。
典型的 Wrap view
需要三个文件,Molajito 将为每个文件注入 view
,其中包括 $this->row
(包含来自 template view
的渲染输出)和 this->runtime_data
。
<footer class="<?= $class ?>"> echo $this->row->content; </footer>
本地化
{T Translate this string T}
Molajito支持使用语言字符串和翻译进行本地化。只需创建一个类似于以下示例的标记,并注入包含语言字符串和翻译的[数组]的translate类(https://github.com/Molajo/Molajito/blob/master/Sample/Bootstrap/Index.php#L20)或为你的翻译类添加一个Translate适配器。
需求与合规性
- PHP应用程序框架独立,无依赖项
- 需要PHP 5.4或更高版本
- 使用语义化版本控制
- 符合
- [phpDocumentor2] (https://github.com/phpDocumentor/phpDocumentor2)
- [phpUnit Testing] (https://github.com/sebastianbergmann/phpunit)
- 作者 AmyStephen
- [Travis持续改进] (https://travis-ci.org/Molajo/Molajito)
- 在[Packagist] (https://packagist.org.cn/packages/molajo/molajito)上列出,并可使用[Composer] (https://getcomposer.org.cn/)安装
- 请使用github提交pull请求和特性
- 遵循MIT许可证 - 有关详细信息,请参阅
LICENSE
文件