如何在Cakephp中获取图像的完整URL?

时间:2013-04-13 15:11:05

标签: image url cakephp hyperlink path

假设我有一个“image.jpg”存储在assets文件夹中,路径是“www.example.com/public”,我只想要图像的字符串路径。我怎么得到这个?我不希望html标签只是路径字符串。

16 个答案:

答案 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"> 

输入type =“image”:

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

答案 1 :(得分:8)

查看HtmlHelper::image()的源代码,看看这个助手如何创建正确的URL;略有修改,这就是它的实现方式:

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

可以在此处找到Helper :: assetUrl()的源代码:https://github.com/cakephp/cakephp/blob/2.3.2/lib/Cake/View/Helper.php#L305

答案 2 :(得分:6)

在CakePHP 3(版本3.2.4)中,您可以使用url / image帮助程序,但路径不是必需的:

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

或其他资产:

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

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

答案 3 :(得分:5)


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

即使您使用主题

,这也有效

答案 4 :(得分:2)

$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

答案 5 :(得分:2)

您可以使用:

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

$ this-&gt; webroot将为您提供应用的当前路径。

答案 6 :(得分: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.

希望您觉得这很有用。

答案 7 :(得分:1)

在CakePHP版本3中,您可以使用url helper:

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

答案 8 :(得分:0)

检查cakephp 2.0 + FULL_BASE_URL

提供的此常量

click here了解所有

答案 9 :(得分:0)

我会用

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

答案 10 :(得分:0)

从CakePHP 3.5开始,我认为最好的选择是:

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

如果您在插件范围内,$this->webroot不合适。

希望它有所帮助。

答案 11 :(得分:0)

示例:http://localhost:8080/ninavendas/rhhealth_vendas/pessoa/importar

在3或以上的蛋糕中,您可以使用:$ this-> request-> webroot

返回:/ ninavendas / rhhealth_vendas /

答案 12 :(得分:0)

fullBase选项-返回带域名的完整URL

$this->Url->image('image.jpg', ['fullBase'=>true]);

答案 13 :(得分:0)

CakePHP 3

使用Cake \ Routing \ Router;

<img src="<?php echo Router::url('/', true); ?>/img/name.jpg" />

答案 14 :(得分:0)

您可以使用此代码...

<?php $image = $this->Html->image('../../site/webroot/img/folder_name/'.$content->image_path.''); ?>

答案 15 :(得分:-3)

我认为你需要自己构建路径。如果您知道文件的名称以及它所在的目录,那么阻止您执行以下操作的原因是什么:

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