Как отобразить аватар / изображение пользователя на странице учетной записи пользователя с помощью Zend Framework?

Изображение загружается пользователем и сохраняется в папке public/users. Скрипт вида выглядит следующим образом:

<?php echo $this->render("includes/header.phtml"); ?>
<div id="header">
<div class="w">
    <div id="logo"><a href="/">SyncFan.com</a></div>
    <div id="mainmenu">
        <ul>
            <li class="selected"><a href="/account/accountmanager"><span>My Account</span></a></li>             
            <li onMouseMove="$('.submenu',this).show();$(this).addClass('hover');"  onMouseOut="$('.submenu',this).hide();$(this).removeClass('hover');"><a href="/artist/list"><span>View Artists</span></a></li>
            <li onMouseMove="$('.submenu',this).show();$(this).addClass('hover');"  onMouseOut="$('.submenu',this).hide();$(this).removeClass('hover');"><a href="/account/update"><span>Update Account</span></a></li>
            <li onMouseMove="$('.submenu',this).show();$(this).addClass('hover');"  onMouseOut="$('.submenu',this).hide();$(this).removeClass('hover');">
                <a href="/account/logout"><span>Log Out</span></a>
            </li>
        </ul>
    </div>
</div>
</div>

<div id="content" class="w">
<h2>SyncFan My Page - <?php $this->session = new Zend_Session_Namespace('login');echo $this->escape($this->session->username); ?></h2>
<!--- MAIN CONTAINER -->
<table class="table">
<tr><td valign="top">
<!--PROFILE DATA-->
<table class="table ">
<tr><td>Username: <?php echo $this->session->username; ?></td></tr>
<tr><td><img src="<?php echo '../public/users/'.$this->avatar; ?>"/></td></tr>
<tr><td><?php echo $this->aboutme; ?></td></tr>
<tr><td>Date Joined: <?php echo $this->session->dateJoined?></td></tr>
</table>
</td>
<td valign="top">
<!--FAVORITE ARTIST LIST-->
<table class="table table-hover">
<?php if($this->artists){?>
<tr align="center">
<td><b>Artist Name</b></td>
<td><b>Date Became A Fan</b></td>
</tr>
<?php foreach($this->artists as $artist){?>
<tr>
<td><a href='/artist/video-list?artist=<?php echo
urlencode($artist['artist_name'])?>'>
<?php echo $this->escape($artist['artist_name']); ?></a></td>
<td><?php echo $this->escape($artist['date_became_fan']); ?></td></tr>
<?php }
}else{
?>
<tr><td>You currently have no favorite artists.</td></tr>
<?php }?>
</table>
</td>
</tr>

</table>
</div>
<?php echo $this->render("includes/footer.phtml"); ?>

в представлении учетной записи. Вывод оператора HTML

<img src="<?php echo '../public/users/'.$this->avatar; ?>"/> 

пустой. Я могу получить подробную информацию о загруженном изображении, но не могу представить его обратно в учетной записи пользователя.

<?php var_dump($this->avatar); ?>

Результатом вышеприведенного оператора является строка 'filename.jpg' (длина = длина файла).

Я также проверил файл.htaccess, но не смог найти в нем ничего плохого. Любая помощь будет принята с благодарностью.

2 ответа

Решение
<img src"<?php echo '/users/'.$this->avatar;?>"/>

Браузер не может получить доступ к чему-либо за пределами корня вашего документа, что, вероятно, /publicТаким образом, путь должен быть относительно этого.

Изменить: Итак, строка из вашего шаблона:

<tr><td><img src="<?php echo '../public/users/'.$this->avatar; ?>"/></td></tr>

если вы просматриваете источник полученной HTML-страницы, вы должны получить:

<tr><td><img src="../public/users/filename.jpg"/></td></tr>

(который не будет работать). С моим предложением выше, строка из вашего шаблона должна быть:

<tr><td><img src"<?php echo '/users/'.$this->avatar;?>"/></td></tr>

который должен дать вам:

<tr><td><img src"/users/filename.jpg"/></td></tr>

Если вы на самом деле получаете:

<tr><td><img src""/></td></tr>

тогда вы пропустили "эхо". Если вы получаете:

<tr><td><img src"/users/"/></td></tr>

затем $this->avatar на самом деле не содержит filename.jpg, как вы сказали.

Если вся страница пуста, на самом деле генерируется ошибка PHP, но у вас есть display_errors выключен (проверьте журнал ошибок вашего веб-сервера). Не зная точно, что вы получаете, все, что я могу сделать, это угадать.

<img src="<?php echo '/users/'.$this->avatar; ?>"/>

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Другие вопросы по тегам