soflomo/common

包含Soflomo公共类的实用模块

v0.8.0 2014-11-04 15:18 UTC

README

Soflomo\Common 是一个小型实用模块,包含一些辅助类。其目的是为许多不同项目提供一些插件/辅助类,以实现一些通用功能。

目前,它提供了以下类

  • 接受控制器插件,用于检查请求中的特定内容类型
  • 附件控制器插件,用于在响应中发送文件作为附件
  • 版本视图助手,从git加载应用程序版本作为公共资源的缓存破坏者

安装

Soflomo\Common 通过composer提供。将 "soflomo/common" 添加到您的 composer.json 列表中。在开发 Soflomo\Common 时,您可以指定最新可用的版本

"soflomo/common": "dev-master"

在您的 config/application.config.php 文件中启用该模块。将 Soflomo\Common 添加到已启用模块的列表中。

使用方法

以下为每个辅助类的使用示例。

接受控制器插件

假设您向 /books/123 的 uri 发起了删除请求。一个 AJAX 请求可能期望得到一个 200 OK 响应和消息体,而对于正常请求,您希望重定向到 /books

// Remove the book with id 123

if ($this->accept('application/json')) {
    return new JsonModel(array(
        'status' => 'success',
        'book'   => array(
            'id' => 123
        )
    ));
}

return $this->redirect()->toRoute('books');

附件控制器插件

您创建了一个PDF文件,并希望让用户下载该文件。

return $this->attachment()
            ->fromFile('data/invoice/123.pdf', 'Invoice 123.pdf', 'application/pdf');

可用方法有 fromFile($path, $name=null, $type=null, $disposition=null)fromBlob($blob, $name, $type=null, $disposition=null)。尚未实现 fromStream() 方法,但在未来的版本中计划实现。

版本视图助手

对于所有样式、图像和javascript文件,新部署的版本可能已更改,但可用在相同的URI下。您希望作为一个缓存破坏机制强制重新加载,但又不希望每次都手动更新版本。

此视图助手使用 git describe --always 从git加载版本描述。对于标签,它将返回标签(例如,v.1.0.4)。如果没有检出标签(例如,在您的预发布环境中),它将加载混合版本(例如,v1.0.4-14-g2414721 或当没有任何标签时 g2414721)。版本可以作为查询字符串附加:css/style.css?v1.0.4

<?php echo $this->headLink()
                ->appendStylesheet($this->basePath() . 'css/style.css?' . $this->version()); ?>