Skip to content

Latest commit

 

History

History
86 lines (62 loc) · 4.47 KB

basic-usage.md

File metadata and controls

86 lines (62 loc) · 4.47 KB

Простой пример использования

Мастер создания компонента

После установки модуля в разделе "Настройки"->"Настройки продукта"->"Список мастеров" будет доступен новый мастер "digitalwand:mvc" - "Мастер создания MVC-компонента". В результате его работы будут созданы файлы компонента в каталоге /local - в соответствии с заданными к мастере параметрами. Получившийся компонент полностью работоспособен и готов к использованию или кастомизации.

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

Роутинг

Допустим, нам нужен компонент, который будет работать по нескольким URL:

  • / - при запросе к корню
  • /one/
  • /two/

.parameters.php компонента необходимо оформить, согласно мануалу битрикса. А class.php компонента должен выглядеть примерно так:

use DigitalWand\MVC\BaseComponent;

\CBitrixComponent::includeComponentClass("digitalwand:mvc.base");

class TestComponent extends BaseComponent
{
    public function actionIndex()
    {
        $this->arResult = 'index';
    }

    public function actionOne()
    {
        $this->arResult = 'one';
    }
    
    public function actionTwo()
    {
        $this->arResult = 'two';
        return 401;
    }
}

Компонент необходимо вывести на сайте, включить в настройках режим ЧПУ, убедиться, что урлы в настройках указаны правильно.

При переходе на URL с компонентом, будет создан экземпляр класса TestComponent. По основному url будет вызываться функция actionIndex(), при переходе к /one/ будет вызвана actionOne(), к /two/ - actionTwo().

При необходимости можно задать http-код ответа для url. Так, функция actionTwo() возвращает http-код 401.

Результаты работы всех функций по-умолчанию кешируются с разными ID кеша.

Передача параметров в URL

В случае, если какие-то части URL должны быть преобразованы в переменные, необходимо настроить плейсхолдеры в .parameters.php, отредактировать параметры подключения компонента.

Так же необходимо внести изменения в класс. Предположим, мы хотим получить данные из URL /filter/date/15.03.1988/. Шаблон URL для указания в настройках компонента должен тогда выглядеть так: /filter/#TYPE#/#VALUE#/, а action-функция контроллера будет принимать дополнительные параметры:

class TestComponent extends BaseComponent
{
    public function actionFilter($type, $value)
    {
        //TODO: реализуем логику фильтра
    }
}

В переменной $type будет содержаться строка "date", в переменной $value - строка "15.03.1988".

Типичные проблемы

Проблема: ни одна функция не работает, по любому URL попадаю в actionIndex

Решение: скорее всего, отсутствует завершающий слеш в url. Для битрикса url с завершающим слешом и без него - разные урлы. Программно это не решается, нужно выставить рерайт для публичной части сайта (но не для админки: она сломается)