如何在Doctrine实体中获取Symfony 2配置?

时间:2013-10-09 10:55:15

标签: php symfony doctrine-orm

我有一个简单的Doctrine Entity,我必须处理文件上传。我已经按照Symfony推荐来实现这个实体(参见http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html),所以我有一个看起来像这样的实体(简化):

<?php
// src/Acme/DemoBundle/Entity/Document.php
namespace Acme\DemoBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity
 */
class Document
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    public $id;

    /**
     * @ORM\Column(type="string", length=255)
     * @Assert\NotBlank
     */
    public $name;

    protected function getUploadRootDir()
    {
        // the absolute directory path where uploaded
        // documents should be saved
        return __DIR__.'/../../../../web/'.$this->getUploadDir();
    }

    protected function getUploadDir()
    {
        // get rid of the __DIR__ so it doesn't screw up
        // when displaying uploaded doc/image in the view.
        return 'uploads/documents';
    }
}

我想更进一步,在Symfony配置文件中配置上传目录,如下所示:

parameters:
    upload_dir: new_upload_dir_value

然后在我的实体中使用此配置值,而不是:

  • 根据getUploadRootDir方法中的当前文件猜测上传目录(如果我更改实体文件位置会怎样?)
  • "uploads"字符串直接放在getUploadDir方法中(我希望能够随时更改它的名称)

我是Symfony2的新手,所以也许我没有正确的方法来处理这种情况,但有没有人知道一个很好的方法来处理这个没有太多的缺点?

0 个答案:

没有答案