web-dev-qa-db-fra.com

Comment obtenir l'URL complète d'une image dans Cakephp?

Supposons que j'ai un "image.jpg" stocké dans le dossier des actifs et que le chemin est "www.exemple.com/public" et que je ne souhaite que le chemin d'accès à l'image. Comment puis-je l'obtenir? Je ne veux pas que les balises html se limitent à la chaîne de chemin. 

11
Johnathan Au

Après avoir essayé les différentes constantes globales de CakePHP (ROOT, WEBROOT_DIR, WWW_ROOT, CSS, etc.) sans résultats, la solution générale semble être trouvée dans la propriété $ this-> webroot qui renvoie le chemin d'accès à l'application webroot. Ainsi, pour les différents cas ci-dessus, nous pouvons avoir dans nos présentations, vues ou éléments:

Un tag d'image simple:

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

Une image de fond dans une cellule de tableau à l'ancienne:

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

Une entrée de type = "image":

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

Regardez à l'intérieur du code source de HtmlHelper::image() pour voir comment cet assistant crée la bonne URL. Légèrement modifié, voici comment cela est réalisé:

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

Le code source de Helper :: assetUrl () est disponible ici: https://github.com/cakephp/cakephp/blob/2.3.2/lib/Cake/View/Helper.php#L305

7
thaJeztah

Dans CakePHP 3 (à partir de la version 3.2.4), vous pouvez utiliser l’assistant url/image, mais le chemin n’est pas nécessaire:

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

Ou d'autres actifs:

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

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

 $ imageUrl = $ this-> Html-> assetUrl ('image.jpg', array (
 // note: requis uniquement si vous avez besoin de 
 // URL -including- http://example.com
 'fullBase' => true, 
 'pathPrefix' => IMAGES_URL 
)); 

cela fonctionne même si vous utilisez des thèmes

5
Thiagocfn

Vous pouvez utiliser:

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

$ this-> webroot vous fournira le chemin actuel de votre application.

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

Passez éventuellement true à l’un des exemples 1 pour l’URL de base complète. (mysite.com/cake/app/img/image.jpg)

WWW_ROOT . 'img/image.jpg' // full/path/to/webroot/img/image.jpg
2
Ross

Dans CakePHP version 3, vous pouvez utiliser l'URL helper:

$this->Url->build('/img/image.jpg');
1
Lars Ebert

Dans CakePHP, normalement les images seront stockées dans le dossier webroot/img.

Ce lien vous sera utile.

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

Paramètres: 

     $path (string) – Path to the image.

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

J'espère que vous trouverez cela utile.

1
Gunaseelan

vérifier cette constante fournie par le cakephp 2.0+ FULL_BASE_URL

cliquez ici pour tout savoir

0
MaNKuR

Exemple: http: // localhost: 8080/ninavendas/rhhealth_vendas/pessoa/importar

Dans le gâteau 3+, vous pouvez utiliser: $ this-> request-> webroot

C'est le retour:/ninavendas/rhhealth_vendas /

0
Danniel Covo

J'utiliserais

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

Depuis CakePHP 3.5, je pense que la meilleure option est: 

$imgUrl = Cake\Routing\Router('/', true) . 'img/' . $imageName;

Si vous êtes à l'intérieur d'un plugin, $this->webroot ne convient pas.

J'espère que ça aide quelqu'un.

0
sk001