cydo/presenter-bundle

该包已被放弃,不再维护。未建议替代包。

CydoPresenterBundle

安装: 269

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 1

开放问题: 0

类型:symfony-bundle

dev-master 2014-09-03 17:53 UTC

This package is not auto-updated.

Last update: 2017-08-01 14:50:41 UTC


README

SensioLabs Insight

Build Status

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 }}