在cakephp 3中为webroot内的目录构建完整的url

时间:2017-04-16 12:37:37

标签: cakephp url-routing cakephp-3.4

我在CakePHP 3.4中工作。

我在img目录之外的files

下的webroot目录中有一张图片

我在files内有一个webroot目录以及cssimgjs

我尝试使用它像

$this->Html->image(WWW_ROOT . 'files' . DS . 'myimage.jpg')

创建路径为

/var/www/html/myproject/webroot/files/myimage.jpg

但这不显示图像。在另一个选项卡中复制和粘贴路径可以完美地加载图像。此外,将图像文件移动到img目录并使用$this->Html->image('myimage.jpg')工作正常。

为什么它不起作用?此外,很容易为目录cssimgjs建立网址

// Outputs http://example.com/img/icon.png
$this->Url->image('icon.png', true);
OR
// Outputs /img/icon.png
$this->Url->image('icon.png');

将导致

http://example.com/img/icon.png

我想为files目录构建网址,如

http://example.com/files/myfile.jpg
OR
// /files/myfile.jpg

如何为imgcssjs以外的目录构建网址。

1 个答案:

答案 0 :(得分:0)

我怀疑使用该路径作为URL是可行的,因为它是一个文件系统路径,以及问题出在哪里。 HtmlHelper::image()仅支持网址,相对网站和网站网址(我猜这方面的文档可以改进)。

默认情况下,相对路径应相对于/img/文件夹。在您的情况下,您可以传递(web)根相对路径,如:

/files/myimage.jpg

如果要生成绝对URL,请使用fullBase选项:

$this->Html->image('/files/myimage.jpg', ['fullBase' => true])

另见