Конечно, вы можете это сделать. На вашей стороне объекта файла, вы можете добавить атрибут UploadDir и создать сеттер так:
private $uploadDir;
public function setUploadDir($uploadDir)
{
if (!$this->uploadDir) {
$this->uploadDir = $uploadDir;
}
}
Ваш комментарий рекомендуем вам использовать Symfony с Доктрина права?
Таким образом, вы можете изменить метод классического getUploadDir(), как это:
protected function getUploadDir()
{
return 'uploads/' . $this->uploadDir;
}
В сущности «родительской» вы должны обновить этот атрибут (при его создании), прежде чем сохраняться или обновить.
(я лично использую жизненный цикл обратный вызов, но вы можете сделать это вручную в контроллере)
use Doctrine\ORM\Mapping as ORM;
/**
* News
*
* @ORM\Table(name="News")
* @ORM\HasLifecycleCallbacks
*/
class News
{
//....
/**
* @ORM\OneToOne(targetEntity="File",cascade={"persist","remove"})
*/
private $file;
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
function setUploadDir()
{
$this->getFile()->setUploadDir('news');
}
// ....
Вы также можете добавить константу, чтобы сделать уборщик кода ... Я надеюсь, что это поможет
Пожалуйста, покажите определение вашей файловой сущности – LBA
это не поможет вам. ^^ @ORM \ OneToOne (targetEntity = "File", cascade = {"persist"}) – arno
Вы не можете связать атрибут с Ассоциацией OneToOne, поэтому либо вы сохраняете свой путь с вашим файловым сущностью (который является targetEntity, и вы его не показывали), либо вы разрешаете свою ассоциацию к OneToMany/ManyToOne, где у вас могут быть атрибуты вашей ассоциации, например, например, ваш путь - но я не вижу в этом никакого смысла. – LBA