如何使用symfony 2中数据库中存储的路径在网页上显示个人资料图片?
我的实体中有这样的代码:
public function setProfilePath($profilePath)
{
$this->profilePath = $profilePath;
return $this;
}
/**
* Get profilePath
*
* @return string
*/
public function getProfilePath()
{
return $this->profilePath;
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
public function getAbsolutePath()
{
return null === $this->path
? null
: $this->getUploadRootDir().'/'.$this->path;
}
public function getWebPath()
{
return null === $this->path
? null
: $this->getUploadDir().'/'.$this->path;
}
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';
}
/**
*
*/
private $file;
/**
* Sets file.
*
* @param UploadedFile $file
*/
public function setFile(UploadedFile $file = null)
{
$this->file = $file;
}
/**
* Get file.
*
* @return UploadedFile
*/
public function getFile()
{
return $this->file;
}
在我的控制器中有这样的代码:
public function showImageAction($id)
{
$user = $this->getDoctrine()
->getManager()
->getRepository('MatrixUserBundle:User')
->find($id);
if (!is_object($user)) {
throw new AccessDeniedException('This user does not have access to this section.');
}
return $this->render('FOSUserBundle:Profile:show_content.html.twig', array('user' => $user));
}
在我的twig文件中,我很难显示用户的个人资料图片,其中图像路径存储在数据库中,图像本身存储在文件系统中。
如何使用symfony 2资产?
答案 0 :(得分:1)
首先,将图像保存在web / bundles / profile / pictures中,以获得更好的结构。
在twig中,你需要使用'〜'来连接一个变量。
您的代码如下:
<img src="{{ asset('bundles/profile/pictures/' ~ variable) }}">
在你的情况下将是:
<img src="{{ asset('bundles/profile/pictures/' ~ user.profilePath) }}">
如果您只保存图像的名称,那将会有效。 如果您要保存整个路径,则需要使用适当的前缀替换“bundles / profile / pictures”,请记住asset()从/ web /
开始