joseym / li3_partials

Lithium(li3) 的部分插件提供了从视图传递模板部分到布局的灵活性。

安装: 209

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 3

类型:lithium-library

dev-master 2015-03-02 11:04 UTC

This package is not auto-updated.

Last update: 2024-09-18 07:40:20 UTC


README

插件,用于将模板部分从视图传递到布局。

安装

  1. 将插件克隆/下载到您的应用的 libraries 目录。

  2. 通过在您的应用的 config/bootstrap/libraries.php 中添加以下内容,告诉您的应用加载此插件:

     Libraries::add('li3_partials');
    

功能

  1. 将字符串或整个标记块分配给部分。

用法

在我工作的项目中,有很多次我有一个干净的布局渲染完成,但客户要求根据渲染的视图更改布局中的某些内容。我使用了元素和视图 上下文 分配了一段时间,但这既不优雅也不愉快。

这个设计是为了根据您的视图传递布局中部分区域的标记更改。

  • 在您的视图中

将您希望传递到布局中的标记包装在 <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')); ?>

待续

  1. 我计划添加增强的缓存功能,以便渲染引擎不会不断解析模板来获取部分。
  2. 动态部分——支持数据模式来自动从数据库加载部分。
  3. 喝一杯啤酒。为什么不呢?

贡献

有改进或功能的想法?发送拉取请求,我欢迎合作!