문제
컨트롤러보기 중 하나에서 PDF에 연결하고 싶습니다. 이것을 달성하기위한 모범 사례는 무엇입니까? Cakephp Webroot 폴더에는 ./files/ subfolder가 포함되어 있습니다. href (예 : "/spath/to/my/webroot/files/myfile.pdf"에서 "Magic"PathNames를 사용하지 않고 링크하려고합니다.
내 옵션은 무엇입니까?
편집하다: 나는 내 질문을 적절하게 설명하지 않았다. 나는/app/webroot/files에서 파일에 링크하려고 시도했다. mod_rewrite
) 방법.
이후 CakePHP 디렉토리 구조 외부에 그러한 파일을 저장 하여이 문제를 해결했습니다.
해결책
$html->link('Pdf', '/files/myfile.pdf');
다른 팁
이것은 다소 접선이지만 모델 및 기타 장소에서 그러한 위치에 액세스하기 위해서는 간단히 할 수 있습니다.
$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 폴더에 넣은 모든 파일은 WebServer에서 액세스 할 수 있으므로 파일을 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>