sauvesolutions/presenters 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sauvesolutions/presenters

Composer 安装命令:

composer require sauvesolutions/presenters

包简介

Simple inverse presenter for Laravel

README 文档

README

Presenters are often used to convert data in a storage format for display. Typical implementations use the decorator pattern.

A similar problem exists when receiving information back from a user, for example on a web form. This needs to be converted from a human readable format into a format suitable for storage.

This is an Unpresenter.

This implementation provides four core capabilities

  • Automatically handles date conversion from a defined format into a Carbon instance for storage
  • Automatically handles checkboxes from forms (not nested)
  • Handles validation simply
  • Provides facility to mutate any attribute.

Requirements

  • Laravel
  • As for Laravel >= v4.1

Installation

You must install this library through Composer:

{
    "require": {
        "SauveSolutions/presenters": "0.2.*"
    }
}

Usage

Using the library is very simple.

  1. Derive an unpresenter class from SauveSolutions\presenters\Unpresenter and implement the functionality you need, typically this is just listing the date variables, the checkbox variables and the validation rules.
  2. In a controller instantiate an instance of the Unpresenter and pass the input array to the constructor.
  3. Call validate and trap any ValidationExceptions thrown.
  4. Access input variables directly from the unpresenter instance.
class ExampleUnpresenter extends SauveSolutions\presenters\Unpresenter {

    //specify any date fields
    protected $dates = ['a_date'];

    //specify any checkboxes that may be expected in the data sent with the web request
    protected $checkboxes = ['important'];

    /**
     * Specify the validation rules to be applied.
     *
     * @param $bUpdate boolean Pass true if the object is being updated, false otherwise.
     * @return array The validation rules.
     */
    public function getValidationRules($update) {
        //if updating an existing record then $update would be true, for a new record it would be false. This allows you
        //to create different rules for updates to existing records or creation of new records, e.g. unique checks that exclude the current record.
        //for this example however simply use a single response.

        return array(
                    'a_date' => 'date_format:d/m/Y'
                );

    }


}

Then in your controller method, for example Store.

public function store() {

    $input = Input::except('_token', '_method');

    $input = new ExampleUnpresenter($input);

    //simple try/catch block - the exception could be caught globally if preferred.
    try {
        //now try and validate
        $input->validate(false);
    } catch (SauveSolutions\exceptions\ValidationException $e) {
        //if it failed then redirect back.
        return Redirect::route('example.create')->withInput()->withErrors($e->getValidationErrors());
    }

    //now create a new example model.
    $model = new ExampleModel();
    $model->a_date = $input['a_date'];
    $model->save();

    //and finally let's show the index page.
    return Redirect::route('example.index');

}

Alternative

An alternative is to call $unpresenter->parseInput() which processes all of the input data and returns a plain php array of the transformed inputs.

FAQ

The DateConverter trait uses an English locale date format (d/m/Y) how can I change this? The simplest approach would be to derive your own Unpresenter class which overrides DateConverter::getDateFormat(). It is expected in any non trivial application that the date format is an attribute of the User or a similar global setting. Then use your Unpresenter class as the base class of any other Unpresenters you create.

Laravel 4.3

Laravel 4.3 has implemented a new FormRequest object that performs the validation functionality of the Unpresenter class. Together with the ability to resolve a class from a hint on a controller method out of the IoC container will provide a further productivity boost. It is likely that the Unpresenter functionality can be combined with the FormRequest functionality in a subclass to provide the transformation capbility. This will be investigated in a future update.

sauvesolutions/presenters 适用场景与选型建议

sauvesolutions/presenters 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 32 次下载、GitHub Stars 达 3, 最近一次更新时间为 2014 年 08 月 28 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 sauvesolutions/presenters 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 sauvesolutions/presenters 我们能提供哪些服务?
定制开发 / 二次开发

基于 sauvesolutions/presenters 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 32
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2014-08-28