uploadcare/uploadcare-symfony2

此包最新版本(v1.0.1)没有提供许可证信息。

Symfony2 官方 Uploadcare 包

v1.0.1 2013-08-15 06:17 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:52:56 UTC


README

这是一个用于与 Symfony2 一起工作的 Uploadcare 的包。

它基于 uploadcare-php 库。

需求

  • Symfony 2.1+
  • PHP 5.3+
  • php-curl

安装

GitHub

从 git 克隆包到您的 vendor 目录

git clone git://github.com/uploadcare/uploadcare-symfony2.git vendor/uploadcare/uploadcare-symfony2 --recursive

Composer

更新 composer.json 中的 "require" 部分

"require": {
  "uploadcare/uploadcare-symfony2": "dev-master"
}   

现在让 composer 下载包

php composer.phar update

添加获取 git 子模块

cd vendor/uploadcare/uploadcare-symfony2 && git init && git update 

编辑 app/autoload.php。添加以下内容

$loader->add('Uploadcare', __DIR__.'/../vendor/uploadcare/uploadcare-symfony2/uploadcare/src');

在 app/config/config.yml 中添加以下内容

parameters:
    uploadcare.public_key: demopublickey
    uploadcare.secret_key: demoprivatekey

services:
    uploadcare:
      class: Uploadcare\UploadcareBundle\UploadcareSymfony
      arguments: [%uploadcare.public_key%, %uploadcare.secret_key%]

这将添加 Uploadcare Bundle 作为服务。

用法

您可以在控制器中这样访问此服务

$this->get('uploadcare');

它将返回一个 UploadcareSymfony 对象。该类扩展了 Uploadcare\Api 类。

创建一些实体

namespace UploadcareTest\UploadcareTestBundle\Entity;

class UCFile
{
  public $file_id;
}

在控制器中创建表单

namespace UploadcareTest\UploadcareTestBundle\Controller;

use Uploadcare\UploadcareBundle\Form\Type\UploadcareWidgetType;

public function indexAction()
{
    $uc_file = new UCFile();
    $form = $this->createFormBuilder($uc_file)
                 ->add('file_id', new UploadcareWidgetType())
                 ->getForm();
    
    return $this->render('UploadcareTestBundle:Default:index.html.twig', array(
        'form' => $form->createView(),
        'uploadcare' => $this->get('uploadcare'),
    ));
}

您可以看到一个 UploadcareWidgetType。它是一个带有特殊参数的隐藏字段,用于激活小部件

要显示小部件和表单,为控制器创建一个视图

{% extends '::base.html.twig' %}
{% block body %}
<form action="{{ path('uploadcare_test_homepage') }}" method="post" {{ form_enctype(form) }}>
    {{ form_widget(form) }}

    <input type="submit" />
</form>
{% endblock %}
{% block javascripts %}
  {{ uploadcare.widget.getScriptTag|raw }}
{% endblock %}

现在您应该能够看到小部件。只需上传一些文件并提交表单。

要处理文件,编辑控制器如下

public function indexAction()
{
    $uc_file = new UCFile();
    $form = $this->createFormBuilder($uc_file)
                 ->add('file_id', new UploadcareWidgetType())
                 ->getForm();
    
    $file = null;
    $request = $this->getRequest();
    if ($request->getMethod() == 'POST') {
      $form->bind($request);
    
      if ($form->isValid()) {
        $data = $request->request->get('form');
        $file_id = $data['file_id'];
        $file = $this->get('uploadcare')->getFile($file_id);
        $file->store();
      }
    }
    
    return $this->render('UploadcareTestBundle:Default:index.html.twig', array(
        'form' => $form->createView(),
        'uploadcare' => $this->get('uploadcare'),
        'file' => $file,
    ));
}

主要部分是使用 "getFile" 方法创建 "$file",然后在文件上使用 "store" 方法。

通过调用 "store" 方法,您告诉 Uploadcare 存储文件,并且它将在 CDN 上可用。

您可以将 "$file" 传递给 twig 模板。"$file" 是 Uploadcare\File 的一个对象。

使用此对象,您可以调用任何与文件相关的操作,并在模板中显示文件,如下所示

{{ file.resize(400, 400).getImgTag|raw }}