Я недавно настроил модуль загрузки на своем сайте. Тем не менее, я чувствую, что это слишком грязно, чтобы поместить все фотографии в один каталог. Поэтому я решил создать одну папку для каждого пользователя с помощью Symfony. Как только пользователь будет зарегистрирован, скопируйте и вставьте существующую папку, а затем работайте с атрибутом имени (идентификатора пользователя), чтобы различать разные папки.
Поэтому я добавил атрибут с именем
private $name;
public function getUploadRootDir()
{
return __dir__ . '/../../../../web/uploads/'. $this->getName();
}
public function getAbsolutePath()
{
return null === $this->path ? null : $this->getUploadRootDir() . '/' . $this->path;
}
public function getWebPath($name) {
return 'uploads/' . $name->getId() . '/' . $this->path;
}
public function getAssetPath()
{
return 'uploads/' . $this->getName() . '/' . $this->path;
}
Загрузка работает нормально, в контроллере я делаю что-то вроде:
$imageProfile->getImage()->setName($user->getId());
Он загружает фотографии в хороший каталог.
Чтобы отобразить картинку, я делаю следующее:
<img class="img-responsive"src="{{ asset(player.base.getWebPath(user)) }}" />
С этим все работает гладко, и я вижу изображение, и оно находится в хорошей папке.
Проблема:
Я получаю эту ошибку, когда хочу отобразить изображение, а также форму для редактирования изображения.
Предупреждение: отсутствует аргумент 1 для COC \ COCBundle \ Entity \ Image :: getWebPath (), вызываемого в C: \ wamp \ www \ symfony_coc \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ PropertyAccess \ PropertyAccessor.php в строке 310 и определил
Я предполагаю, что это идет с параметром «name», который я добавил к методу getWebPath (), но я не понимаю, почему это связано с ошибкой поставщика. (Я попытался удалить и сгенерировать его снова, та же проблема)
Ваша помощь будет очень признательна.
Спасибо.
Ваша ошибка, это нормально, что она связана с вендором, так как Symfony также находится в вендоре, и PropertyAccessor является одним из его компонентов, который обрабатывает доступ к свойствам сущности и пытается получить доступ к вашему веб-пути, но параметр name отсутствует, поэтому он генерирует эту ошибку.
Возможно, вам следует проверить, если вы вызываете getWebPath где-то еще в проекте, а затем добавьте в него свой параметр.
Если эта строка является единственной, которая использует getWebPath, то, возможно, это ваш кеш, и что ваш кеш все еще имеет версию: {{ asset(player.base.getWebPath()) }}
без параметра, если это так, попробуйте очистить кеш в папке консоли вашего проекта:
php app/console cache:clear --env=dev --no-warmup --no-debug
или —env = prod, если используется prod (app.php).
Если это не сработает, попробуйте с трудом:
sudo rm -R app/cache/dev/twig/
или же app/cache/prod/twig/
Других решений пока нет …