• Yii2. Как работает pjax (или это просто AJAX) при data-pjax="0" и наличии data-method и data-confirm?

    @xskif Автор вопроса
    Кажется я сам разобрался =)
    Все дело в наличии табулярной формы, которая как раз имеет data-pjax. Алгоритм получается такой.

    Ссылка/кнопка при обработке data-method ищет ближайшую форму, если находит, то применяет все действия к ней, если не находит, создает новую форму.
    Меняет action и method для данной формы на установленные соответственно.
    Ну а дальше все просто. Спасибо дебагеру хрома.

    В итоге, чтобы добиться AJAX поведения для data-method и data-confirm нужно обернуть такую ссылку в форму с установленным data-pjax. Извращение конечно, но пока разработчики ничего лучше не сделали.
    Ответ написан
    2 комментария
  • CentOS php-imagick выдает ошибку компиляции при установке. Что делать?

    @xskif Автор вопроса
    Решил проблему сам:
    1. Полез /tmp/pear , там лежат архивы скаченных расширений.
    2. Распаковал imagick.tgz
    3. Запустил phpize для проверки потом ./configure который выдал мне те же ошибки, но сохранил config.log.
    4. Полез читать лог (в который раз убеждаюсь в их полезности) в логе было написано компиляция валится из-за того, что компилятор не может найти stdio.h.
    5. Полез в /usr/include - действительно нет файла, но g++ и gcc установлены.
    6. Еле нагугли ответ для CentOS. Советуют поставить glibc-headers.
    7. yum install glibc-headers
    8. pecl install imagick
    9. PROFIT!
    Ответ написан
    Комментировать
  • Авторизация в PHP + MVC, где осуществлять проверку?

    @xskif
    Идеальный вариант - создать middleware слой между контроллером и роутером. Дать возможность подгружать туда middleware классы через конфигурацию или заранее определенную папку. Создать класс который и будет проверять сессию/куки. Обычно вся логика в таких классах лежит в методе 'run'.

    Если не хотите усложнять, можете создать ApplicationController, в котором будет базовый функционал для всех контроллеров приложения, например, авторизация, и наследовать все остальные контроллеры от него.

    Еще можно добавить авторизацию в качестве RequestInterceptor класса, который так же подключается к контроллеру (лучше к базовому) и реагирует на прописанные события контроллера. Подписываете перехватчик на beforeAction и проводите авторизацию. Последний способ больше для RESTful приложений.
    Ответ написан
  • Как в Yii2 перенести компонент из папки yii/vendor, в папку проекта?

    @xskif
    А унаследовать целевой класс и изменить то, что в нем не устраивает, никак?
    Ответ написан