2008-10-24 22 views
7

Bazı PDF'lere denetleyici görünümlerimden birinde bağlanmak istiyorum. Bunu başarmak için en iyi uygulama nedir? CakePHP webroot klasörü bir ./files/ alt klasörü içeriyor, hrefimde "magic" yol adlarını kullanmadan bağlantı kurmaya çalışarak şaşıyorum (ör. "/path/to/my/webroot/files/myfile.pdf").Bir CakePHP görünümündeki bir dosyaya (ör. PDF) bağlantı oluşturma

Seçeneklerim nelerdir?

DÜZENLEME: Sorumu yeterince açıklamamıştım./App/webroot/files/platformunda agnostik (yani, mod_rewrite) yolundaki dosyalara bağlanmaya çalışıyordum.

Bu nedenle, bu tür dosyaları CakePHP dizin yapısının dışında depolayarak çalıştım.

cevap

16
$html->link('Pdf', '/files/myfile.pdf'); 
+0

Bu, kesinlikle, sorularımın doğru cevabıdır. Ancak, ben/app/webroot/files dizinindeki dosyalara birden çok platformda bağlantı kurmakta zorlandığımı iyi haber vermedim; Özellikle, mod_rewrite kullanılamıyor ... –

+0

Bunu echo $ this-> Html-> link olarak kullanıyorum (substr ($ result ['S'] ['RESULT'], 0,20), $ sonuç [ 'S'] [ 'filepath']); ama o COMPUTER CRIMEA JOIN verir ..i – jack

+0

aldığımı istiyorum Doğru şekilde (yol ve dosya adı) yazıldığından emin olun ya da eksik denetleyici hataları atar. Bir süredir başım ağrıyor ... – karns

1

Soruyu doğru anladığımdan emin değilim, ama işte burada. Temelde webroot klasörüne koyduğunuz herhangi bir dosya web sunucusunda erişilebilir olacaktır, bu yüzden dosyayı webroot/files/file.pdf dosyasına koyarsanız, /files/file.pdf dosyasına bağlanırsınız. Bu işe yaramazsa, sorunuzu netleştirmek lütfen

...

0

ya ...

<a href="<?php echo $html->url('/files/somefile.pdf'); ?>">Link Text</a> 
1

ya ..

<a href="<?php echo $this->webroot; ?>files/somefile.pdf">Link Text</a> 

:)

4

Bunun mod_rewri olduğunda bir sorun olduğunu onaylayabilirim te kullanılmıyor. çıkış

<a href="/pathtoapp/app/webroot/files/test.pdf">pdf</a> 
+0

not: hata http: //cakephp.lighthouseapp.com/projects/42648/tickets/1289-htmlhelperlink-to-image-broken-when-not-kullanmayan-mod_rewrite # ticket-1289-3 –

2

Bu çalışması gerekir gerekir

<?php echo $html->link('pdf', '/files/test.pdf'); ?> 

çıkış

<a href="/pathtoapp/index.php/files/test.pdf">pdf</a> 

<?php echo $html->link('pdf', $this->webroot('files'.DS.'test.pdf'); ?> 
+0

Bu çalışır, ancak CakePHP'nin yeni sürümlerinde, $ html-> webroot' $ this-> webroot 'yerine kullanılmalıdır. – dnet

6

Bu biraz teğet ama modeller böyle bir konuma erişmek için ve sim olarak başka yerler kat bunu:

$file = WWW_ROOT . DS . 'files' . DS; 

Bu taktik tür XML veya JSON olarak statik veri yükleme için birileri erişen dosyalar, yararlı olabilir.

Bu, genel tüketim veya herkese açık bağlantı için önerilmez.

0
 <a href="<?php echo $this->request->webroot . 'carpetadentrodelwebroot/archivo.pdf'; ?>" target="pdf-frame" download="nombreParaDescarga">Descargar Archivo</a> 
+2

Yığın Taşmasına Hoş Geldiniz! Sınırlı, anında yardım sağlayabilen bu kod snippet'i için teşekkür ederiz. Doğru bir açıklama [// meta.stackexchange.com/q/114762] uzun vadeli değerini * göstererek * neden * bu sorunun iyi bir çözümü olduğunu ve gelecekteki okuyuculara daha yararlı olmasını diğer, benzer sorular. Lütfen yaptığınız varsayımlar dahil, bazı açıklamalar eklemek için cevabınızı [düzenleyin]. –

İlgili konular