Скажем, у меня есть "image.jpg", хранящийся в папке с ресурсами, и путь "www.example.com/public", и мне нужен только строковый путь к изображению. Как мне это получить? Я НЕ хочу, чтобы html-теги только строка пути.
Как получить полный URL-адрес изображения в Cakephp?
Ответ 1
После проверки различных глобальных констант 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">
Ввод типа = "image":
<input type="image" src="<?php echo $this->webroot; ?>img/go_btn.gif" ... />
I think webroot always work
Ответ 2
Просмотрите исходный код 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
Ответ 3
В 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');
Ответ 4
$imageUrl = $this->Html->assetUrl('image.jpg', array( // note: only required if you need the // URL -including- http://example.com 'fullBase' => true, 'pathPrefix' => IMAGES_URL ));
это работает, даже если вы используете темы
Ответ 5
$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
Ответ 6
Вы можете использовать:
$this->webroot.'img/abc.jpg'
$this- > webroot предоставит вам текущий путь к вашему приложению.
Ответ 7
В CakePHP, обычно изображения будут сохранены в папке webroot/img.
Эта ссылка будет полезной для вас.
HtmlHelper::image(string $path, array $options = array())
Параметры:
$path (string) – Path to the image.
$options (array) – An array of html attributes.
Надеюсь, вы найдете это полезным.
Ответ 8
В CakePHP версии 3 вы можете использовать помощник URL:
$this->Url->build('/img/image.jpg');
Ответ 9
проверьте эту константу, предоставленную cakephp 2.0+ FULL_BASE_URL
нажмите здесь, чтобы узнать все
Ответ 10
Я бы использовал
$this->Html->url('/', true).'img/image.jpg';
Ответ 11
Что касается CakePHP 3.5, я думаю, что лучший вариант:
$imgUrl = Cake\Routing\Router('/', true) . 'img/' . $imageName;
Если вы $this->webroot
внутри области плагина, $this->webroot
не подходит.
Надеюсь, это поможет кому-то.
Ответ 12
Пример: http://localhost: 8080/ninavendas/rhhealth_vendas/pessoa/importar
В торте 3+ вы можете использовать: $this-> request-> webroot
Это возвращение: /ninavendas/rhhealth_vendas/
Ответ 13
Опция fullBase
- вернуть полный URL с именем домена:
$this->Url->image('image.jpg', ['fullBase'=>true]);
Ответ 14
CakePHP 3
используйте Cake\Routing\Router;
<img src="<?php echo Router::url('/', true); ?>/img/name.jpg" />
Ответ 15
Думаю, вам нужно самому составить путь. Если вы знаете имя файла и каталог, в котором он находится, что мешает вам сделать следующее:
$imageUrl = sprintf("%s/%s/%s", FULL_BASE_URL, "public", $imageName);
// this produces http://www.example.com/public/image.png