ifnot / renderable
此包已被废弃,不再维护。未建议替代包。
Renderable 是 Laravel 的 PHP 展示器,基于 blade 视图,可直接在视图中展示 Eloquent 模型。
dev-master
2015-03-16 18:02 UTC
Requires
- php: >=5.4.0
- illuminate/support: 4.2.*
This package is auto-updated.
Last update: 2020-02-05 22:56:05 UTC
README
Renderable 是 Laravel 的 PHP 展示器,基于 blade 视图,可直接在视图中展示 Eloquent 模型。
安装
只需使用 composer 安装此包。
composer require ifnot/renderable
将包服务提供者注册到你的 app.php
'Ifnot\Renderable\RenderableServiceProvider',
它是如何工作的?
Renderable 对象类似于展示器对象,但用于返回视图(完整或部分)。如果你熟悉展示器模式,你应该很容易理解 Renderable 的机制。
此包的主要目标是提供用于渲染模型/属性的视图。如果你想直接在视图中包含模型(或模型属性),而不指定定义它的 HTML,这将非常有用。
此包包含两个方面
- 属性渲染器
- 模型渲染器
属性渲染器(基本设置)
我们有一个 Page
模型(它可以是 Eloquent 模型)和一个 PageRenderer
(为 Page 分配的渲染器类)。
Page
use Ifnot\Renderable\RenderableTrait; class Page extends Eloquent { use RenderableTrait; public $renderer = 'PageRenderer'; }
PageRenderer
use Ifnot\Renderable\Renderer; class PageRenderer extends Renderer { public function title() { return $this->render($this->entity->title, 'page.property.title'); } }
然后,page.property.title
视图
<h1>{{ $property }}</h1>
现在你可以在应用程序的常规视图中调用 $page->render()->title
.. other stuff here ... <div> {{ $page->render()->title}} <p>This is another text, blah blah blah ...</p> </div> .. other stuff here ..
模型渲染器(基本设置)
现在,如果你想通过自身渲染整个模型,而不指定每个属性,我们必须在 PageRenderer
中添加一些配置
PageRenderer
use Ifnot\Renderable\Renderer; class PageRenderer extends Renderer { public $renderable = [ 'model' => [ 'show' => 'page.model' ] ]; // ... // Here, properties declaration (like title in the previous example) // ... }
然后,page.model
视图
<div> <h1>{{ $entity->render()->title }}</h1> <p>{{ $entity->content }}</p> </div>
现在你可以在视图中调用 $page->render()
.. other stuff here .. <article> {{ $page->render() }} </article> .. other stuff here ..
高级设置
- TODO:关于属性绑定的说明
- TODO:解释显示模式的使用...