joseym / li3_partials
Lithium(li3) 的部分插件提供了从视图传递模板部分到布局的灵活性。
Requires
Suggests
- UnionOfRAD/lithium: Lithium is required for this plugin.
This package is not auto-updated.
Last update: 2024-09-18 07:40:20 UTC
README
插件,用于将模板部分从视图传递到布局。
安装
-
将插件克隆/下载到您的应用的
libraries
目录。 -
通过在您的应用的
config/bootstrap/libraries.php
中添加以下内容,告诉您的应用加载此插件:Libraries::add('li3_partials');
功能
- 将字符串或整个标记块分配给部分。
用法
块
在我工作的项目中,有很多次我有一个干净的布局渲染完成,但客户要求根据渲染的视图更改布局中的某些内容。我使用了元素和视图 上下文
分配了一段时间,但这既不优雅也不愉快。
这个设计是为了根据您的视图传递布局中部分区域的标记更改。
将您希望传递到布局中的标记包装在 <partial></partial>
标签内,并带有 name
属性。
``` html
<partial name="sidebar"><h2>Sidebar for this view!</h2></partial>
```
在视图中打印已定义的块部分有两种方式:
1. Call the blocks partial name and assign type `block`
``` php
<?php echo $this->partial->sidebar(array('type' => 'block')); ?>
```
2. Call a partial block and pass the partials name
``` php
<?php echo $this->partial->block('sidebar');?>
```
您可以在决定放置这些内容的任何地方渲染在视图定义的该位置。
字符串
类似于块,此方法用于将文本字符串传递到布局。
“为什么?”你问,“好问题!”我回答说
从页面的描述或关键字的角度来考虑,这些可能需要根据页面视图进行更改,但我找不到简单的方法将这些需求传递给布局。
在您的视图模板的头部(或实际上任何地方,我只是认为将它们一起放在顶部更整洁)添加以下内容:
``` php
<?php $this->partial->keywords('awesome, li3, github, php, partials, woot, nifty, grand, pie, unicorns, alfalfa sprouts'); ?>
```
It doesn't matter what you name this method, just keep in mind that that name will be how you call it in the layout.
好的,我们为我们的视图定义了关键字!让我们将它们添加到元标签中
``` html
<meta name="keywords" content="<?php echo $this->partial->keywords(); ?>" />
```
The plugin will find the stored keywords partial and render its contents where it was called.
还有一个包装器来确保您只拉取字符串——就像块一样
<?php echo $this->partial->string('keyword'); ?>
“那太愚蠢了,用另一种方法更简单!”你大声喊道。别急,Fredword!我将在下面解释你可能为什么想这样做。
共享名称
可能存在一种情况,您定义了具有相同名称的部分字符串和部分块。为了确保您拉取正确的一个,每种方法有两种(实际上对于 . 是三种)。
字符串
<?php echo $this->partial->string('methodName'); ?> <?php echo $this->partial->methodName(array('type' => 'string')); ?>
块
<?php echo $this->partial->block('methodName'); ?> <?php echo $this->partial->methodName(array('type' => 'block')); ?>
待续
- 我计划添加增强的缓存功能,以便渲染引擎不会不断解析模板来获取部分。
- 动态部分——支持数据模式来自动从数据库加载部分。
- 喝一杯啤酒。为什么不呢?
贡献
有改进或功能的想法?发送拉取请求,我欢迎合作!