2013-04-13 28 views
9

Giả sử tôi có một "image.jpg" được lưu trữ trong thư mục nội dung và đường dẫn là "www.example.com/public" và tôi chỉ muốn đường dẫn chuỗi đến hình ảnh. Làm thế nào để có được điều này? Tôi KHÔNG muốn các thẻ html chỉ có chuỗi đường dẫn.Làm cách nào để nhận URL đầy đủ vào hình ảnh trong CakePHP?

+0

Bạn có muốn nói rằng các tập tin image.jpg được lưu trữ trong đường dẫn mà bạn đã đưa ra? –

+0

Xin lỗi, ý bạn là gì? –

+0

hãy xây dựng câu hỏi của bạn. Hoặc làm cho nó rõ ràng –

Trả lời

21

Sau khi thử các hằng số toàn cục CakePHP khác nhau (ROOT, WEBROOT_DIR, WWW_ROOT, CSS, v.v.) mà không có kết quả, giải pháp chung dường như được tìm thấy trong thuộc tính $ this-> webroot trả về đường dẫn đến ứng dụng webroot . Như vậy đối với các trường hợp khác nhau trên chúng tôi có thể có trong bố trí, quan điểm hoặc các yếu tố của chúng tôi:

Một thẻ hình ảnh đơn giản:

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

Một hình ảnh nền trong một bảng tế bào theo cách cũ:

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

Một đầu vào của type = "image":

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

Đã làm việc cho tôi. Điều quan trọng cần lưu ý là một số globals đã không còn được dùng như 2.4: http://book.cakephp.org/2.0/en/core-libraries/global-constants-and-functions.html –

+0

Lưu ý: Giải pháp này không phải là plugin an toàn . – MjrKusanagi

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

Tùy chọn chuyển true ví dụ một cho URL cơ sở đầy đủ. (mysite.com/cake/app/img/image.jpg)

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

Hey, tôi đang thử Html-> url nhưng tôi nhận được "Gọi đến một hàm thành viên url() trên một đối tượng không" lỗi. Tôi đã bao gồm "public $ helpers = array ('Html', 'Form');" trong Bộ điều khiển của tôi ... –

+0

@JohnathanAu bạn đang sử dụng phiên bản CakePHP nào? – thaJeztah

+0

phiên bản mới nhất. –

-2

tôi nghĩ rằng bạn cần để tạo nên con đường cho mình. Nếu bạn biết tên của tập tin và thư mục đến nơi nó cư trú, điều gì đang ngăn cản bạn từ cách làm như sau:

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

séc trị giá hằng số này được cung cấp bởi các cakephp 2.0+ FULL_BASE_URL

click here biết tất cả

+0

Hoạt động trong CakePHP 1.2.2 quá! Cảm ơn vì tiền boa! – FAjir

+0

lưu ý CakePHP: Không được chấp nhận kể từ phiên bản 2.4: Hằng số này không được chấp nhận, bạn nên sử dụng Router :: fullbaseUrl() để thay thế. – FAjir

+0

Ok, nhờ Florito chia sẻ thông tin tuyệt vời này. – MaNKuR

5

Nhìn vào bên trong mã nguồn của HtmlHelper::image() để xem cách trình trợ giúp này tạo URL phù hợp; Chút thay đổi, đây là cách nó đạt được:

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

Các mã nguồn cho Helper :: assetUrl() có thể được tìm thấy ở đây: https://github.com/cakephp/cakephp/blob/2.3.2/lib/Cake/View/Helper.php#L305

2

Bạn có thể sử dụng:

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

$ this- > webroot sẽ cung cấp cho bạn đường dẫn hiện tại của ứng dụng của bạn.

1

Trong CakePHP, thông thường Hình ảnh sẽ được lưu trữ trong thư mục webroot/img.

Điều này link sẽ hữu ích cho bạn.

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

Tham số:

 $path (string) – Path to the image. 

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

Hy vọng bạn tìm thấy điều này là có ích.

0

Tôi sẽ sử dụng

$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 
    )); 

làm việc này ngay cả khi bạn đang sử dụng chủ đề

+0

Hoạt động trong phiên bản CakePHP 2. cảm ơn! – mfink

+0

Hoạt động ngoại trừ tôi đã phải sử dụng: ''pathPrefix' => Cấu hình :: đọc ('App.imageBaseUrl')' vì imageBaseUrl được định nghĩa trong core.php – zeflex

0

Trong CakePHP phiên bản 3, bạn có thể sử dụng các helper url:

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

Trong CakePHP 3 (từ phiên bản 3.2.4), bạn có thể sử dụng trình trợ giúp url/hình ảnh, nhưng đường dẫn không cần thiết:

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

Hoặc tài sản khác:

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

// Outputs /css/app.css 
$this->Url->css('my.css'); 
Các vấn đề liên quan