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