2013-04-13 33 views
9

比方說,我有一個「image.jpg」存儲在資產文件夾中,路徑是「www.example.com/public」,我只需要圖像的字符串路徑。我如何得到這個?我不希望html標籤只有路徑字符串。如何獲取Cakephp中圖片的完整URL?

+0

你想說的是,文件image.jpg文件存儲在你給的路徑? –

+0

對不起,你的意思是? –

+0

請詳細說明您的問題。或者說清楚 –

回答

21

在嘗試使用不帶結果的各種CakePHP全局常量(ROOT,WEBROOT_DIR,WWW_ROOT,CSS等)後,通常的解決方案似乎可以在$ this-> webroot屬性中找到,該屬性返回應用程序webroot的路徑。因此,對於不同的情況下,上面我們可以在我們的佈局,觀點或元素:

一個簡單的圖片標籤:

<img src="<?php echo $this->webroot; ?>img/foo.gif" .../ > 

表格內的一個背景圖像單元格的老路上:

<td background="<?php echo $this->webroot; ?>img/foo.gif"> 

An的類型= 「圖像」 輸入:

<input type="image" src="<?php echo $this->webroot; ?>img/go_btn.gif" ... /> 
+0

爲我工作。需要注意的是,一些全局變量從2.4開始已被棄用:http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html –

+0

注意:此解決方案不是插件安全的。 – MjrKusanagi

3
$this->Html->url('/img/image.jpg') // returns /cake/app/img/image.jpg 

可選地將true通過示例一用於完整基準URL。 (mysite.com/cake/app/img/image.jpg

WWW_ROOT . 'img/image.jpg' // full/path/to/webroot/img/image.jpg 
+0

嘿,我正在嘗試Html-> url,但我得到了「調用一個非對象的成員函數url()錯誤。我已經包含了「public $ helpers = array('Html','Form');」在我的控制器中... –

+0

@JohnathanAu你使用的是什麼版本的CakePHP? – thaJeztah

+0

最新的一個。 –

-2

我覺得你需要自己寫作。如果您知道文件和目錄於它所駐留的名字,什麼是從做以下阻止你:

$imageUrl = sprintf("%s/%s/%s", FULL_BASE_URL, "public", $imageName); 
// this produces http://www.example.com/public/image.png 
1

檢查由CakePHP中提供了這個常數2.0+ FULL_BASE_URL

click here知道全部

+0

也適用於CakePHP 1.2.2!謝謝你的提示! – FAjir

+0

note CakePHP: 從版本2.4開始棄用:此常量已棄用,您應該使用Router :: fullbaseUrl()來代替。 – FAjir

+0

好的,謝謝Florito分享這個美妙的信息。 – MaNKuR

2

您可以使用:

$this->webroot.'img/abc.jpg' 

$這個 - > webroot會爲您提供您應用的當前路徑。

1

在CakePHP中,通常圖像將存儲在webroot/img文件夾中。

這個link會對您有所幫助。

 HtmlHelper::image(string $path, array $options = array()) 

參數:

 $path (string) – Path to the image. 

    $options (array) – An array of html attributes. 

希望你覺得這是有用的。

0

我會用

$this->Html->url('/', true).'img/image.jpg'; 
4
 

    $imageUrl = $this->Html->assetUrl('image.jpg', array(
     // note: only required if you need the 
     // URL -including- http://example.com 
     'fullBase' => true, 
     'pathPrefix' => IMAGES_URL 
    )); 

這個工程,即使您正在使用的主題

+0

作品在cakePHP版本2.謝謝! – mfink

+0

除了我必須使用:''pathPrefix'=> Configure :: read('App.imageBaseUrl')'因爲imageBaseUrl是在core.php中定義的 – zeflex

0

在CakePHP 3版本,你可以使用url幫手:

$this->Url->build('/img/image.jpg'); 
6

在CakePHP 3(從版本3.2.4開始),您可以使用url/image helper,但路徑不是必需的:

$this->Url->image('image.jpg'); 

或其他資產:

// Outputs /js/app.js 
$this->Url->script('my.js'); 

// Outputs /css/app.css 
$this->Url->css('my.css');