2012-05-04 18 views
0

私はZend Frameworkを初めて使っています。これは基本的な質問ですが、私には許されますが、データベースから取得したイメージを表示しています。Zend Frameworkでイメージを表示

編集:基本的には、/ public /フォルダーからリソースにアクセスすることはできません。私は、フロントコントローラが<link>タグと<img>タグ内でsrcリクエストをリダイレクトしていると推測しています。私が検索するたびに、/ public /フォルダ外の画像にアクセスするのに問題がある人がいますが、/ publicフォルダの下に保存されていれば問題ありません。私は間違って何をしていますか?

私は部分図に次のコードを持っている:$userのダンプを行う

<?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> 

は私に次のようになります:

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

仮想ホストを使用していますか?通常、あなたはフロントエンドのURLに/ publicを持たないでしょう。 'public'は仮想ホスト定義の一部です。 –

+0

はい私はそうです。/public /フォルダがdocルートとして設定されています。私は/ public /なしで試してみたが、それでも動作しません。私が絶対的な定義を与えても、私はサイト全体のどこにでも画像にアクセスすることはできません。 (あるいは、 '@ import'を使わない限り、css) –

+0

ウェブルートの標準の' .htaccess'は、実際に存在するファイル/ディレクトリのフレームワークをバイパスします。 'http:// yourhostname/img/users/small_thumbs4fa3072fe09a5 .jpg'をブラウザーに入れても画像は取得できません。もう一つの考え: 'small_thumbs'はフォルダーですか?そうなら、スラッシュがありません。正しいURLは'/img/users/small_thumbs/4fa3072fe09a5 'です。 jpg' –

答えて

1

技術的には、フレームワークを使用している場合は、ビューでロジックを実行しないでください。あなたは、単に行うあなたのコントローラで、あなたのビューでのif/else文を実行する必要があります。ブラウザのsrc属性を貼り付けコピーした場合

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

しかし、あなたの質問のようになり、それは絵を表示していますか?

これは私の.htaccessです。これは、この正規表現に一致する拡張子が直接に提供され、他のすべてを自分のブートストラップファイルであるindex.phpにリダイレクトします。

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

公開されていませんコントローラ、ZF autoは任意のreqをリダイレクトしますそのディレクトリにアクセスしてください。だからあなたはいつものようにプラグインすることはできません。だから私は画像を扱うヘルパーがいるかどうか尋ねた。記録のために、私は物理的にイメージが存在することを確認することができます。はい、そうです。 –

+0

ソースは正しくレンダリングされ、イメージは別々に表示されますが、レンダリングされたページには表示されません。 –

+0

また、if/elseロジックは、約50個のコントローラにわたって数百ページに適用されます。そして、この論理は部分的であり、ビュー自体ではありません。 –

関連する問題