Ответы пользователя по тегу Yii
  • Как открывать модальные окна для каждой записи в GridView yii2?

    @urfinjazz
    нужно создать пустое модальное окно, обернуть GridView в Pjax
    и подгружать в модальное окно Ваши записи примерно таким запросом:

    $('.activity-view-link').click(function() {
          $.get(
              'путь до страницы с шаблоном',
              {
                  id: $(this).closest('tr').data('key')
              },
              function (data) {
                  $('.modal-body').html(data);
                  $('#activity-modal').modal();
              }
          );
      });
    Ответ написан
  • Как в Yii2 работать со связанными таблицами при помощи ActiveRecord?

    @urfinjazz Автор вопроса
    Отвечу на свой вопрос, вдруг кому-то пригодится.

    Итак, задача:
    Есть таблица pages и связанная таблица content, в таблице content может быть несколько записей с одним page_id.
    Нужно реализовать список всех pages, при клике на "edit page" мы должны попасть на страницу с контентом этой page.

    Реализация:
    Заходим в gii, создаём модель для pages, если поставить галочку Generate Relations, в моделе создастся функция
    getContents()
        {
            return $this->hasMany(Content::className(), ['page_id' => 'id']);
        }

    Создаём модель для Content.
    Создаём CRUD для Pages.

    В контроллере Pages меняем строчку
    $model = Pages::findOne($id)
    на
    $model = Pages::find()->with('contents')->where(['id'=>$id])->one()

    Всё. Можем работать с данными из таблицы content.

    Первый вопрос - можно ли пихать такое в контроллер - остаётся открытым.
    Вернее, я уверен, что не стоит.
    Ответ написан
    7 комментариев
  • Как в Yii2 basic убрать web/ из url при помощи .htaccess и правил urlManager'а?

    @urfinjazz Автор вопроса
    Отвечу на свой вопрос :)
    спасибо, Иван, за наводку

    .htaccess в web оставляем такой же
    .htaccess в корне сайта:
    Options +FollowSymLinks
    IndexIgnore */*
    RewriteEngine on
    
    RewriteCond %{REQUEST_URI} !^/(web)
    RewriteRule ^assets/(.*)$ /web/assets/$1 [L]
    RewriteRule ^css/(.*)$ web/css/$1 [L]
    RewriteRule ^js/(.*)$ web/js/$1 [L]
    RewriteRule ^images/(.*)$ web/images/$1 [L]
    RewriteRule (.*) /web/$1
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /web/index.php

    в конфиге web.php в 'request' добавляем строчку:
    'baseUrl'=> '',

    Всем спасибо за внимание!
    Ответ написан
    9 комментариев