Не верный порядок поиска шаблонов

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
elrevin
Сообщения: 8
Зарегистрирован: 2014.05.05, 11:43

Не верный порядок поиска шаблонов

Сообщение elrevin »

Доброго вам дня, коллеги.
Наткнулся на такой баг.
Имеется приложение, в нем есть тема:
web/themes/basic/views/layouts/main.twig
web/themes/basic/views/myModule/views/default/index.twig

в конфиге все это выглядит так:

Код: Выделить всё

    'view' => [
      'defaultExtension' => 'twig',
      'class' => 'yii\web\View',
      'renderers' => [
        'twig' => [
          'class' => 'yii\twig\ViewRenderer',
          'options' => ['auto_reload' => true],
          'globals' => ['html' => '\yii\helpers\Html'],
        ],
      ],
      'theme' => [
        'pathMap' => [
          '@app/views' => '@webroot/themes/basic/views',
          '@app/modules' => '@webroot/themes/basic/views'
        ],
        'baseUrl' => '@web/themes/basic',
        'basePath' => '@webroot/themes/basic'
      ],
    ],
все работает, до тех пор пока существуют шаблон index.twig и лэйоут main.twig в папках по умолчанию:

APP/views/layouts/main.twig
APP/modules/myModule/views/index.twig

причем рендерятся в итоге правильные шаблоны из темы, но стоит удалить шаблоны из стандартных папок, все валится с ошибками, примерно такими:
The view file does not exist: XXX\www\modules\myModule\views\default\index.php

А все потому что метод findViewFile класса yii\base\View проверяет есть ли запрошенный файл шаблона в стандартной директории, и если нет, то просто присобачивает к имени файла расширение php и все. Далее в методе renderFile того же класса проверяется есть ли тема и если есть, то найденный путь несуществующего шаблона меняется на путь указанный в настройках темы и проверяется есть ли файл по полученному пути, а его там нет, так как мы ошибочно проверяем наличие php файла, возвращается исходный ошибочный путь и все падает с ошибкой.
Последний раз редактировалось elrevin 2014.07.23, 16:12, всего редактировалось 1 раз.
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Не верный порядок поиска шаблонов

Сообщение lynicidn »

Это нормальное поведение :D он пишет что нет файла - все естественно, а по умолчанию php шаблонизатор,в котором не надо указывать расширение. Не нашел файл ищет php, не нашел - ошибка
elrevin
Сообщения: 8
Зарегистрирован: 2014.05.05, 11:43

Re: Не верный порядок поиска шаблонов

Сообщение elrevin »

lynicidn писал(а):Это нормальное поведение :D он пишет что нет файла - все естественно, а по умолчанию php шаблонизатор,в котором не надо указывать расширение. Не нашел файл ищет php, не нашел - ошибка
Это нормально, если нет темы в которой есть нужный файл шаблона. Проблема-то в том, что шаблон есть в теме, но он рендерится только в том случае если одноименный файл с шаблоном есть в папке по умолчанию. Например:
есть шаблон index.twig в папке APP/modules/ModuleName/views в котором слово "Hello", и есть шаблон для этого же модуля в теме, и в нем слово "Bye", отрендерится слово "Bye", то есть все правильно. Но стоит удалить первый шаблон (он ведь вроде и не нужен), как все падает. И все потому что view ищет шаблон в папке по умолчанию, потом меняет его пути на те что в настройках темы и только потом рендерит, но на первом шаге шаблон не находится и вместо того чтобы просто поискать его в теме, его имя меняется на несуществующее.
elrevin
Сообщения: 8
Зарегистрирован: 2014.05.05, 11:43

Re: Не верный порядок поиска шаблонов

Сообщение elrevin »

Упс, а почему тема в архиве?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не верный порядок поиска шаблонов

Сообщение samdark »

Перетащил обратно. Сочинить тестовый набор сумеете?
elrevin
Сообщения: 8
Зарегистрирован: 2014.05.05, 11:43

Re: Не верный порядок поиска шаблонов

Сообщение elrevin »

Sam Dark писал(а):Перетащил обратно. Сочинить тестовый набор сумеете?
Сомневаюсь что смогу сделать это быстро :oops: , только начал разбираться с Yii2 и до тестов еще просто не дошел, пока только экспериментирую...
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не верный порядок поиска шаблонов

Сообщение samdark »

Да не, я имею ввиду запаковать в zip basic-приложение с удалённым всем, кроме проблемного места.
elrevin
Сообщения: 8
Зарегистрирован: 2014.05.05, 11:43

Re: Не верный порядок поиска шаблонов

Сообщение elrevin »

А ну это могу - https://yadi.sk/d/TN42CMimXHtgx там файл read-me.txt в корне лежит, в нем подробно описано что делать что бы воспроизвести проблему.
Ответить