質問
コントローラービューのいずれかのPDFにリンクしたい。これを達成するためのベストプラクティスは何ですか? CakePHP webrootフォルダーには./files/サブフォルダーが含まれています。" magic"を使用せずにリンクしようとすると混乱します。 my hrefのパス名(例:" /path/to/my/webroot/files/myfile.pdf")。
私のオプションは何ですか?
編集:自分の質問を適切に説明していません。プラットフォームに依存しない(つまり mod_rewrite
なし)方法で/ app / webroot / files /のファイルにリンクしようとしました。
その後、このようなファイルをCakePHPのディレクトリ構造外に保存することで、この問題を回避しました。
解決
$html->link('Pdf', '/files/myfile.pdf');
他のヒント
これはやや接線ですが、Modelsや他の場所でそのような場所にアクセスするには、次のようにします。
$file = WWW_ROOT . DS . 'files' . DS;
この戦術は、XMLやJSONなどの静的データの読み込みのためにファイルにアクセスする人にとって役立つかもしれません。
これは、一般消費または公開リンクには推奨されません。
mod_rewriteが使用されていない場合、これが問題であることを確認できます。
<?php echo $html->link('pdf', '/files/test.pdf'); ?>
出力
<a href="/pathtoapp/index.php/files/test.pdf">pdf</a>
出力する必要があります
<a href="/pathtoapp/app/webroot/files/test.pdf">pdf</a>
これは動作するはずです
<?php echo $html->link('pdf', $this->webroot('files'.DS.'test.pdf'); ?>
質問を正しく理解しているかどうかはわかりませんが、ここに行きます。基本的に、webrootフォルダーに配置したファイルはすべてWebサーバーでアクセスできるため、webroot / files / file.pdfにファイルを配置した場合は、/ files / file.pdfにリンクするだけです。
それでもうまくいかない場合は、質問を明確にしてください...
または..
<a href="<?php echo $this->webroot; ?>files/somefile.pdf">Link Text</a>
:)
または...
<a href="<?php echo $html->url('/files/somefile.pdf'); ?>">Link Text</a>
<a href="<?php echo $this->request->webroot . 'carpetadentrodelwebroot/archivo.pdf'; ?>" target="pdf-frame" download="nombreParaDescarga">Descargar Archivo</a>