【问题标题】:VichUploader uri_prefix not accounting for environmentVichUploader uri_prefix 不考虑环境
【发布时间】:2015-10-20 10:23:33
【问题描述】:

我在我的项目中使用VichUploaderBundle
我无法获取下载链接(使用vich_file 表单类型时)以考虑环境(尤其是dev)。我想做的,因为我想通过一个函数来路由下载功能。

我的配置是这样的;

vich_uploader:
    db_driver: orm
    twig:      true
    mappings:
        logo_image:
            uri_prefix:         /foo/image
            upload_destination: %kernel.root_dir%/../app/private/images
            inject_on_load:     false
            delete_on_update:   true
            delete_on_remove:   true

无论环境如何,这都会生成http://example.com/foo/image/fubar.jpg的下载uri。
在开发环境中应该是http://example.com/app_dev.php/foo/image/fubar.jpg,或者在测试环境中 http://example.com/app_test.php/foo/image/fubar.jpg

【问题讨论】:

  • 为什么需要这个?这些是静态文件,因此它们不需要由前端控制器处理
  • @CarlosGranados 因为我希望将图像保存在 Web 根目录之上,因此只能通过可以在提供图像之前检查凭据的功能进行访问。

标签: php symfony vichuploaderbundle


【解决方案1】:

一种可能的解决方案是使用可以访问路由器类的自定义文件命名器类。 在配置中将uri_prefix 设置为 /

vich_uploader:
    db_driver: orm
    twig:      true
    mappings:
        logo_image:
            uri_prefix:         /
            upload_destination: %kernel.root_dir%/../app/private/images
            inject_on_load:     false
            delete_on_update:   true
            delete_on_remove:   true
            namer: my.namer.foo

创建一个服务命​​名器类,该类返回带有所需路由的完整 url(带参数);

<?php
namespace AppBundle\Service;

use Vich\UploaderBundle\Naming\NamerInterface,
    Vich\UploaderBundle\Mapping\PropertyMapping;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
class MyNamer implements NamerInterface 
{

    private $router;

    public function __construct(Router $router) 
    {
        $this->router = $router;
    }

    public function name($foo, PropertyMapping $mapping) 
    {
        $router = $this->router->getContext();
        $full_url = $router->getHost();
        $full_url .= $router->getBaseUrl().'/';
        $full_url .= 'foo/logo/'.strtolower($foo->getName());
        return $full_url;
    }

}

将其注册为服务;

services:
    my.namer.foo:
        class: AppBundle\Service\MyNamer
        arguments: ['@router']
        tags:
            - { name: namer }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多