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.
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
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
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');
$ 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
Vous pouvez utiliser:
$this->webroot.'img/abc.jpg'
$ this-> webroot vous fournira le chemin actuel de votre application.
$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
Dans CakePHP version 3, vous pouvez utiliser l'URL helper:
$this->Url->build('/img/image.jpg');
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.
vérifier cette constante fournie par le cakephp 2.0+ FULL_BASE_URL
cliquez ici pour tout savoir
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 /
J'utiliserais
$this->Html->url('/', true).'img/image.jpg';
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.