Страница 1 из 2
Создание ссылок с backend на frontend
Добавлено: 2014.09.03, 21:59
S c
http://www.yiiframework.com/doc-2.0/gui ... o-frontend
Пример в доке:
Код: Выделить всё
return [
'components' => [
'urlManager' => [
// here is your normal backend url manager config
],
'urlManagerFrontend' => [
// here is your frontend URL manager config
],
],
];
Как это использовать?
Сохраняю фотографии к новости в папке frontend\web\uploads\news\test.jpg. Хочу с backend-а (
http://bk.site.com) получить ссылку на фотку, используя
Код: Выделить всё
Yii::$app->urlManagerFrontend->createUrl(...);
Нужно получить ссылку: "
http://site.com/uploads/news/test.jpg". Не пойму какие url правила описать
p.s. кстати в ссылке на guide - якоря не работают почемуто
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.03, 22:02
S c
видел следующее решение
viewtopic.php?f=28&t=16414&start=200#p104295
но хотелось бы именно разобраться в варианте, предложенном выше
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.03, 22:04
yiijeka
createAbsoluteUrl('uploads/news/test.jpg')
Если не сработает, то $baseUrl установить для urlManagerFrontend нужный
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.03, 22:10
mickgeek
У меня так:
Код: Выделить всё
'urlManagerFrontend' => [
'class' => 'yii\web\UrlManager',
'baseUrl' => '',
'hostInfo' => 'http://domain.ru',
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
],
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.03, 22:42
slavcodev
Гори в аду, автор advanced шаблона!
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.03, 22:49
yiijeka
оО а мне нравится
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.04, 02:29
samdark
Я автор... а чего сразу в аду?
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.04, 02:37
slavcodev
Sam Dark писал(а):Я автор... а чего сразу в аду?
Не, не. Я не про конкретно "Yii 2 Advanced Application Template".
А про саму структуру, вроде кто-то из Clevertech первый предложил.
Не хочу холиварить, особенно здесь. Считайте это мое, никого не интересующее ИМХО!
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.04, 07:57
yiijeka
Цян же при yii1 ещё
вики написал. На основе её потом Антонио боллерплайте создал. И понеслась...
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.04, 21:07
S c
Спасибо огромное, особенно yiijeka и mickgeek. Работает. Но как по мне - это не совсем корректно, в createUrl передавать что то типа "'uploads/news/test.jpg'", ведь createUrl ждет route (модуль/контроллер/экшен), а не просто ссылку. Верно ведь?
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.04, 21:21
yiijeka
Ну да не совсем то. Лучше писать urlFmanager->baseUrl . '/upload/new/test.jpg' .
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.04, 21:48
S c
то что нужно, и так просто! Спасибо.
p.s. наверное лучше ->hostInfo использовать?
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.04, 21:58
yiijeka
Хм, я его никогда не использовал. Всегда baseUrl хватало, не знаю, чем baseUrl от hostInfo отличается?
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.05, 02:26
Stepan Selyuk
/**
* Returns the base URL that is used by [[createUrl()]] to prepend URLs it creates.
* It defaults to [[Request::scriptUrl]] if [[showScriptName]] is true or [[enablePrettyUrl]] is false;
* otherwise, it defaults to [[Request::baseUrl]].
* @return string the base URL that is used by [[createUrl()]] to prepend URLs it creates.
* @throws InvalidConfigException if running in console application and [[baseUrl]] is not configured.
*/
public function getBaseUrl();
/**
* Returns the host info that is used by [[createAbsoluteUrl()]] to prepend URLs it creates.
* @return string the host info (e.g. "
http://www.example.com") that is used by [[createAbsoluteUrl()]] to prepend URLs it creates.
* @throws InvalidConfigException if running in console application and [[hostInfo]] is not configured.
*/
public function getHostInfo();
Второй возвращает абсолютные адреса, включая схему и домен. getHostInfo() там где нужно экспортировать адрес, на другой сайт, например. А на страницах вашего приложения можно просто указывать /upload/images/image.jpg или ->getBaseUrl() . '/upload/images/image.jpg', в случае если у вас приложение лежит в подкаталоге и соответственно upload тоже лежит в подкаталоге относительно каталога на который корень домена смотрит.
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.05, 08:00
yiijeka
Код: Выделить всё
echo Yii::$app->urlManager->baseUrl;
echo Yii::$app->urlManager->hostInfo;
Расставило всё на свои места.
А я как ... использовал param, в который писал домен. И пихал в рассылку писем... За столько лет почему-то даже и не пришло на ум посмотреть есть ли в природе Yii hostInfo. Спасибо и вам
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.05, 08:27
S c
Stepan Selyuk писал(а):
/**
* Returns the base URL that is used by [[createUrl()]] to prepend URLs it creates.
* It defaults to [[Request::scriptUrl]] if [[showScriptName]] is true or [[enablePrettyUrl]] is false;
* otherwise, it defaults to [[Request::baseUrl]].
* @return string the base URL that is used by [[createUrl()]] to prepend URLs it creates.
* @throws InvalidConfigException if running in console application and [[baseUrl]] is not configured.
*/
public function getBaseUrl();
/**
* Returns the host info that is used by [[createAbsoluteUrl()]] to prepend URLs it creates.
* @return string the host info (e.g. "
http://www.example.com") that is used by [[createAbsoluteUrl()]] to prepend URLs it creates.
* @throws InvalidConfigException if running in console application and [[hostInfo]] is not configured.
*/
public function getHostInfo();
Второй возвращает абсолютные адреса, включая схему и домен. getHostInfo() там где нужно экспортировать адрес, на другой сайт, например. А на страницах вашего приложения можно просто указывать /upload/images/image.jpg или ->getBaseUrl() . '/upload/images/image.jpg', в случае если у вас приложение лежит в подкаталоге и соответственно upload тоже лежит в подкаталоге относительно каталога на который корень домена смотрит.
В моём случае front и backend - можно сказать 2 разных сайта. С разными доменами.
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.05, 14:58
Stepan Selyuk
yiijeka писал(а):Код: Выделить всё
echo Yii::$app->urlManager->baseUrl;
echo Yii::$app->urlManager->hostInfo;
Расставило всё на свои места.
А я как ... использовал param, в который писал домен. И пихал в рассылку писем... За столько лет почему-то даже и не пришло на ум посмотреть есть ли в природе Yii hostInfo. Спасибо и вам
В консольном режиме все равно не поможет и там нужно юзать как раз заданный в конфиге (каком-либо) параметр.
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.05, 15:00
yiijeka
Я про это подумал сразу же и полез - посмотреть urlManager же доступен в ConsoleApplication
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.05, 15:16
Stepan Selyuk
И в консоли работает эта функция и выдает нормальный результат?
Re: Создание ссылок с backend на frontend
Добавлено: 2014.09.05, 15:17
yiijeka
urlManager->hostInfo наверное да. Когда-нибудь попробую