cydo / presenter-bundle
CydoPresenterBundle
This package is not auto-updated.
Last update: 2017-08-01 14:50:41 UTC
README
CydoPresenterBundle 允许您轻松地在 Symfony2 应用程序中使用演示者。演示者是一个简单的类,它负责视图逻辑,而不是让模型来完成工作。
它有助于透明地分离关注点,因为演示者会代理方法到模型,如果它们未定义。
您可以通过以下 4 个简单步骤开始快速使用它。
步骤 1 : 使用 composer 下载 CydoPresenterBundle
您可以使用以下命令将包添加到项目中
php composer.phar require cydo/presenter-bundle dev-master
它将包安装到您项目的 vendor/cydo
目录中。
步骤 2 : 启用包
要启用包,您需要在应用程序内核中注册它,如下所示
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Cydo\PresenterBundle\CydoPresenterBundle(), ); }
步骤 3 : 创建演示者
您可以为模型(或另一个对象类)创建演示者。以下是一个与基本 Task 模型(具有 name 和 progress 属性)关联的演示者的示例代码。
<?php // src/Acme/DemoBundle/Presenter/TaskPresenter.php use Cydo\PresenterBundle\Presenter\BasePresenter; class TaskPresenter extends BasePresenter { public function getDisplayName() { return $this->object->getName() . ' (' . $this->object->getProgress() . ' %)'; } }
步骤 4 : 在视图中使用演示者
要在视图中使用演示者,您只需将 new TaskPresenter($task)
传递给视图,而不是只传递 $task
。
您可以在模型中定义一个简单的 presenter()
方法,它返回与当前实例关联的 TaskPresenter
。如果您找到关联的演示者,也可以使用包含在包中的 PresenterTrait
来实现此方法。
例如,如果您的模型是 Acme\DemoBundle\Entity\Task
,则自动加载的演示者将是 Acme\DemoBundle\Presenter\TaskPresenter
。
您不需要更改之前的模板代码,因为所有未在演示者中重新定义的方法都将由模型自动处理。
例如,使用上述演示者,您可以执行如下操作
{{ task.name }} ({{ task.progress }} %) is equivalent to {{ task.displayName }}
步骤 5 : 高级使用
有时您希望模型的某些属性在代码中保持不变,同时在视图中以另一种方式显示。
假设您有一个具有 money 属性的模型,您希望模型的 getMoney()
返回一个浮点数,但您希望视图显示为 $ 9.45。
您可以通过在演示者中创建一个 getMoney()
方法来实现这一点。模型仍然返回浮点数,而演示者将在您在 Twig 中这样做时返回您喜欢的货币格式:{{ object.money }}
。