【发布时间】:2015-05-22 15:03:59
【问题描述】:
我最近在我的网站上设置了上传模块。但是,我觉得将每张图片都放在一个目录中太乱了。所以我决定使用 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,在 C:\wamp\www\symfony_coc\vendor\symfony\symfony\src\Symfony\Component\PropertyAccess\PropertyAccessor.php 中调用在第 310 行并定义
我猜它带有我添加到 getWebPath() 方法的参数“名称”,但我不明白为什么这与供应商错误有关。 (我尝试删除并重新生成,同样的问题)
非常感谢您的帮助。
谢谢。
【问题讨论】:
-
当你 dump() 用户时你会得到什么?
-
福阿,谢谢你的回答。我得到了预期的结果: private 'path' (COC\COCBundle\Entity\Image) => string 'b6a762e8beb8eb314495dc51b8dca523f644e73f.jpeg' (length=45) public 'file' => null private 'iduser' (COC\COCBundle\Entity \Image) => int 1(文件为空,因为我没有在页面中提交任何内容,我只是想显示我的图片...)
标签: php image symfony upload vendor