多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 模板解析器 ### 介绍 十月使用几种标准来处理标记,模板和配置。每个人都经过精心选择,以发挥自己的作用,使您的开发过程和学习曲线尽可能简单。例如,[在主题中找到](https://octobercms.com/docs/cms/themes)的[对象](https://octobercms.com/docs/cms/themes)在其模板结构中使用[Twig](https://octobercms.com/docs/services/parser#twig-parser)和[INI格式](https://octobercms.com/docs/services/parser#ini-parser)。每个解析器将在下面更详细地描述。 ### [](https://octobercms.com/docs/services/parser#markdown-parser)Markdown解析器 Markdown允许您编写易于阅读和易于编写的纯文本格式,然后将其转换为HTML。该`Markdown`外观用于解析Markdown语法,并且基于[GitHub风格的markdown](https://help.github.com/articles/github-flavored-markdown/)。减价的一些快速示例: ~~~ This text is **bold**, this text is *italic*, this text is ~~crossed out~~. # The largest heading (an <h1> tag) ## The second largest heading (an <h2> tag) ... ###### The 6th largest heading (an <h6> tag) ~~~ 使用该`Markdown::parse`方法将Markdown呈现为HTML: ~~~ $html = Markdown::parse($markdown); ~~~ 您也可以使用`|md`过滤器来[解析前端标记中的Markdown](https://octobercms.com/docs/markup/filter-md)。 ~~~ {{ '**Text** is bold.'|md }} ~~~ ### [](https://octobercms.com/docs/services/parser#twig-parser)树枝模板解析器 Twig是一个简单但功能强大的模板引擎,可将HTML模板解析为优化的PHP代码,它是[前端标记](https://octobercms.com/docs/markup),[查看内容](https://octobercms.com/docs/services/response-view#views)和[邮件内容的](https://octobercms.com/docs/services/mail#message-content)背后驱动力。 该`Twig`门面被用来解析嫩枝语法,您可以使用该`Twig::parse`方法来呈现嫩枝为HTML。 ~~~ $html = Twig::parse($twig); ~~~ 第二个参数可用于将变量传递到Twig标记。 ~~~ $html = Twig::parse($twig, ['foo' => 'bar']); ~~~ Twig解析器可以扩展为通过[插件注册文件](https://octobercms.com/docs/plugin/registration#extending-twig)注册自定义功能。 ### [](https://octobercms.com/docs/services/parser#bracket-parser)括号解析器 October还附带了一个简单的括号模板解析器,以替代Twig解析器,该解析器当前用于将变量传递到[主题内容块](https://octobercms.com/docs/cms/content#content-variables)。该引擎呈现HTML的速度更快,并且被设计为更适合非技术用户。该解析器没有外观,因此`October\Rain\Parse\Bracket`应将完全限定的类与该`parse`方法一起使用。 ~~~ use October\Rain\Parse\Bracket; $html = Bracket::parse($content, ['foo' => 'bar']); ~~~ 该语法使用单个*大括号*来呈现变量: ~~~ <p>Hello there, {foo}</p> ~~~ 您还可以传递对象数组以将其解析为变量。 ~~~ $html = Template::parse($content, ['likes' => [ ['name' => 'Dogs'], ['name' => 'Fishing'], ['name' => 'Golf'] ]]); ~~~ 可以使用以下语法对数组进行迭代: ~~~ <ul> {likes} <li>{name}</li> {/likes} </ul> ~~~ ### [](https://octobercms.com/docs/services/parser#yaml-parser)YAML配置解析器 YAML(“ YAML不是标记语言”)是一种配置格式,与Markdown相似,它被设计为易于阅读和易于编写的格式,可以转换为PHP数组。十月的后端开发几乎在任何地方都使用它,例如[表单字段](https://octobercms.com/docs/backend/forms#form-fields)和[列表列](https://octobercms.com/docs/backend/lists##list-columns)定义。一些YAML的示例: ~~~ receipt: Acme Purchase Invoice date: 2015-10-02 user: name: Joe surname: Blogs ~~~ 该`Yaml`门面被用来解析YAML和使用`Yaml::parse`方法来呈现YAML的PHP数组: ~~~ $array = Yaml::parse($yamlString); ~~~ 使用该`parseFile`方法来解析文件的内容: ~~~ $array = Yaml::parseFile($filePath); ~~~ 解析器还支持反向操作,从PHP数组输出YAML格式。您可以`render`为此使用方法: ~~~ $yamlString = Yaml::render($array); ~~~ ### [](https://octobercms.com/docs/services/parser#ini-parser)初始化(INI)配置解析器 INI文件格式是定义简单配置文件的标准,通常由[主题模板内](https://octobercms.com/docs/cms/components)的[组件](https://octobercms.com/docs/cms/components)使用。它可以被认为是YAML格式的表亲,尽管它与YAML不同,但它非常简单,对拼写错误不敏感并且不依赖缩进。它支持带有部分的基本键值对,例如: ~~~ receipt = "Acme Purchase Invoice" date = "2015-10-02" [user] name = "Joe" surname = "Blogs" ~~~ 该`Ini`门面被用来解析INI和使用`Ini::parse`方法来呈现INI到PHP数组: ~~~ $array = Ini::parse($iniString); ~~~ 使用该`parseFile`方法来解析文件的内容: ~~~ $array = Ini::parseFile($filePath); ~~~ 解析器还支持反向操作,从PHP数组输出INI格式。您可以`render`为此使用方法: ~~~ $iniString = Ini::render($array); ~~~ ### [](https://octobercms.com/docs/services/parser#october-ini)十月风味INI 传统上,PHP函数使用的INI解析器`parse_ini_string`仅限于3级深度的数组。例如: ~~~ level1Value = "foo" level1Array[] = "bar" [level1Object] level2Value = "hello" level2Array[] = "world" level2Object[level3Value] = "stop here" ~~~ October通过使用*October风格的INI*扩展了此功能,以允许无限深度的数组(受HTML表单语法的启发)。在上面的示例之后,支持以下语法: ~~~ [level1Object] level2Object[level3Array][] = "Yay!" level2Object[level3Object][level4Value] = "Yay!" level2Object[level3Object][level4Array][] = "Yay!" level2Object[level3Object][level4Object][level5Value] = "Yay!" ; ... to infinity and beyond! ~~~