0

我最近在我的网站上设置了上传模块。但是,我觉得将每张图片都放在一个目录中太乱了。所以我决定使用 symfony 为每个用户创建一个文件夹。用户注册后,复制并粘贴现有文件夹,然后使用名称(用户 ID)属性来区分不同的文件夹。

所以我添加了一个名为 name 的属性

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)) }}" />

一切顺利,我可以看到图片,它在好文件夹中。

问题:

当我想显示图片以及编辑图片的表单时出现此错误。

警告:缺少 COC\COCBundle\Entity\Image::getWebPath() 的参数 1,在第 310 行的 C:\wamp\www\symfony_coc\vendor\symfony\symfony\src\Symfony\Component\PropertyAccess\PropertyAccessor.php 中调用并定义

我猜它带有我添加到 getWebPath() 方法的参数“名称”,但我不明白为什么这与供应商错误有关。(我尝试删除并再次生成它,同样的问题)

您的帮助将不胜感激。

谢谢你。

4

1 回答 1

0

您的错误,它与供应商有关是正常的,因为 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/

于 2015-03-20T03:50:54.697 回答