Как исправить URL-адреса пользовательского контроллера представления Yii2

#php #yii2

#php #yii2

Вопрос:

Я создал отдельный контроллер представления с именем HotelController.php и добавил следующее внутри:

 <?php

namespace appcontrollers;

use Yii;
use yiiwebController;
use yiifiltersAccessControl;

/**
 * HotelController is only for displaying static pages.
 */
class HotelController extends Controller
{
    /**
     * Displays news story 1 page.
     *
     * @return string
     */
    public function actionSunshine()
    {
        return $this->render('sunshine');
    }

}
  

Затем я создал папку внутри view папки с именем hotel . Внутри этой папки я создал представление с именем sunshine.php . Это работает хорошо и отображает страницу при посещении mysite.com/hotel/sunshine . Проблема сейчас в том, что изображения на сайтах исчезли, потому что вместо страницы, получающей изображение по этому пути mysite.com/img/location.jpg , браузер пытается получить его с mysite.com/hotel/img/location.jpg .

В web.php У меня установлены правила перезаписи, как показано ниже:

     'urlManager' => [
         'class' => 'yiiwebUrlManager',
         'enablePrettyUrl' => true,
        'showScriptName' => false,
        'enableStrictParsing'=>false,
        'rules' => [
            '<alias:[w-] >' => 'site/<alias>'                             
        ],
    ],
  

Как я могу предотвратить возникновение этой проблемы. Я только хочу, чтобы структура URL страницы не переписывала другие ссылки на странице.

Обновить:

В sunshine.php файл, у нас есть пример кода ниже:

 <?php

use yiihelpersHtml;
use worstinmeuikitActiveForm;
use yiicaptchaCaptcha;

$this->title = 'Demo';

<?php
use yiihelpersUrl;
?>


<div class="uk-section"  src="img/demo.jpg">
    <div class="uk-container">
        <div class="uk-width-1-1">
                <div class="left-indent uk-light">
                    <h1>Lorem Ipsum </h1>
                </div>
                <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim.</p>

                <p>Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus.</p>                
        </div>
    </div>
</div>
  

Изображение в HTML-коде не загружается по причине, которую я указал ранее.

Комментарии:

1. Можете ли вы показать содержимое вашего просмотра?

2. Пожалуйста, смотрите выше @rob006.

Ответ №1:

Вы включили помощник URL, но не использовали его. Вы могли бы изменить путь src на:

 <?= Url::to('@web/img/demo.gif'); ?>
  

Где @web — это веб-корень.

Это автоматически обновит путь к веб-корню для вас, независимо от того, где находится представление.

Ответ №2:

Ваше изображение использует относительный URL, поэтому оно всегда относительно текущего URL. Вы должны использовать getBaseUrl() , чтобы сделать его абсолютным:

 <div class="uk-section"  src="<?= Yii::$app->getRequest()->getBaseUrl() ?>/img/demo.jpg">