2012-05-04 2 views
0

Я новичок в Zend Framework, так что простите, если это основной вопрос, но у меня есть время, отображающее изображение, извлеченное из базы данных.Отображение изображения в Zend Framework

Редактировать: В основном я не могу получить доступ к ресурсу из папки/public /. Я предполагаю, что фронт-контроллер перенаправляет запросы src внутри тегов <link> и <img> тегов. Каждый раз, когда я выполняю поиск, я вижу, что у людей возникают проблемы с образами за пределами/public/folder ... но они кажутся прекрасными, пока они хранятся в папке/public. Что я делаю не так?

У меня есть следующий код в целях частичной:

<?php 
$user = Zend_Layout::getMvcInstance()->getView()->user; 

?> 
<section class="one-fifth first sidebar_profile"> 
    <div class="one-fifth first about_img"><img src="<?php if($user->picture){echo '/public/img/users/small_thumbs/'.$user->picture;}else{echo "#";} ?>" alt="name"/> 
     <p class="name"><?php if($user) {echo $user->username; } else { echo "Username";} ?></p> 

Doing дамп $user дает мне следующее:

object(Zend_Db_Table_Row)[70] 
protected '_data' => 
array 
    'userID' => string '22' (length=2) 
    'username' => string 'test' (length=4) 
    'firstName' => string '' (length=0) 
    'lastName' => string '' (length=0) 
    'email' => string '[email protected]' (length=18) 
    'password' => string '098f6bcd4621d373cade4e832627b4f6' (length=32) 
    'picture' => string '4fa3072fe09a5.jpg' (length=17) 
    'verified' => string '1' (length=1) 
    'confirm_key' => null 
    'admin' => null 

Это продолжается довольно долго, но точку файл есть. Глядя на исходный код из страницы, которая оказанной, то строка отображается как:

<img alt="name" src="/public/img/users/small_thumbs4fa3072fe09a5.jpg"> 

Должен ли я использовать какой-то вид помощника, чтобы отобразить это? Я искал и искал, и не мог найти его.

+0

Вы используете виртуальный хост? Как правило, у вас не будет/'public' в ваших внешних URL-адресах; «public» будет частью определения виртуального хоста. –

+0

да я. Папка/public/установлена ​​в качестве корня doc. Я пробовал это с/без/public /, и это все равно не сработает. Даже когда я даю абсолютное определение, я не могу получить доступ к изображениям в любом месте сайта. (Или css, если я не использую '@ import' –

+0

. Стандартный' .htaccess' в корневом каталоге сети будет обходить фреймворк для любых файлов/каталогов, которые _ фактически существуют. Если вы введете 'http: // yourhostname/img/users/small_thumbs4fa3072fe09a5 .jpg в браузере, вы не получаете изображение? Еще одна мысль: «Маленькая_база» - папка? Если это так, вам не хватает косой черты, правильным URL-адресом будет '/ img/users/small_thumbs/4fa3072fe09a5. jpg' –

ответ

1

Технически, если вы используете фреймворки, вы не должны делать логику в своем представлении. Вы должны сделать, если/другое заявление, в вашем контроллере и на ваш взгляд, просто сделать:

<div class="one-fifth first about_img"><img src="$img"/></div> 

Но для идет ваш вопрос, если вы копируете вставить атрибут Src в вашем браузере, она показывает картину?

Это мой .htaccess. Он обслуживает напрямую любой файл, который соответствует этому регулярному выражению, и перенаправляет все остальное на мой index.php, который является моим файлом начальной загрузки.

RewriteEngine On 
RewriteRule \.(shtml|js|ico|gif|jpg|png|css|flv|swf|swz)$ - [NC,L] 
RewriteRule ^.*$ index.php 
+0

Нет публичного контроллер, и ZF автоматически перенаправляет любой запрос uest в этот каталог. Так что нет возможности подключить это, как обычно. Вот почему я спросил, есть ли помощник для обработки изображений. Для записи я могу физически проверить изображение. И да, это так. –

+0

Итак, источник отображается правильно, и изображение отображается отдельно, но оно не отображается на вашей отображаемой странице? –

+0

Кроме того, логика if/else применяется к сотням страниц в 50 контроллерах. И эта логика находится в частичном, а не самом представлении. –

Смежные вопросы