如何使用存储在数据库中的路径在symfony 2的网页上显示个人资料图片

时间:2016-05-10 02:03:11

标签: php symfony

如何使用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资产?

1 个答案:

答案 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 /

开始