Методы InitComponentVariables и MakeComponentVariableAliases в 1C-Bitrix (режим SEF=N)

5616
0

При написании компонентов Bitrix Вам скорее всего понадобится использовать данные методы, а описание этих методов в стандартной документации довольно путанное, попробуем разъяснить их суть более понятным языком.

Будем рассматривать ситуацию когда в комплексном компоненте выключен режим SEF (понятные для человека адреса) и мы имеем адреса страниц в которых имеются различные параметры.

Про псевдонимы входящих переменных

Перед тем как приступить к описанию методов MakeComponentVariableAliases и InitComponentVariables необходимо понимать что такое псевдонимы входящих переменных.

Каждый компонент Bitrix может принимать различные переменные, подобно тому как обычный php файл принимает методом GET различные параметры. Таким образом, если мы хотим передать в какой либо php файл нужную переменную, то можно это сделать задав ее в адресной строке:

httt://мойсайт.ку/?ELEMENT_ID=123

Если по указанному адресу имеется скрипт, то в него будет передана переменная ELEMENT_ID, содержащая значение 123. 1C-Bitrix позволяет в компонентах задавать псевдонимы переменных. Это означает, что если переменной для переменной ELEMENT_ID задать псевдоним EID то для передачи значения в скрипт можно будет открыть адресс:

httt://мойсайт.ку/?EID=123

но тогда в скрипт будет передана EID вместо ELEMENT_ID. Именно эту проблему и решают методы MakeComponentVariableAliases и InitComponentVariables. Рассмотрим на примере.

Метод MakeComponentVariableAliases

Представим что коде компонента мы оперируем с переменной ELEMENT_ID но в качестве параметров нам надо передавать EID. В параметрах компонента мы задаем псевдоним переменной ELEMENT_ID в значение EID.

Теперь массив параметров во время выполнения кода компонента (то есть при выполнении component.php) будет содержать:

$arParams[«VARIABLE_ALIASES»] = array(«ELEMENT_ID» => «EID»)

В результате выполнения метода MakeComponentVariableAliases значение псевдонима по умолчанию для переменной ELEMENT_ID было заменено на заданное в параметрах компонента.

Однако задача все еще не решена, так как в переменной ELEMENT_ID все еще отсутствует необходимо значение, так как значение было передано в EID. Нам остается лишь восстановить значения истинных переменных, а для этого пользуемся методом InitComponentVariables.

Метод InitComponentVariables

Использование метода InitComponentVariables логично после предварительного сопоставления псевдонимов и имен переменных, то есть после выполнения метода MakeComponentVariableAliases.

  • 1. componentPage — для не SEF режима значение должно быть false
  • 2. arComponentVariables — массив имен переменных которые может получать компонент извне
  • 3. arVariableAliases — массив соответствия имен переменных и псевдонимов
  • 4. arVariables — массив в который попадут восстановленные истинные переменные

Продолжая вышеописанный код:

После выполнения данного метода массив $arVariables примет вид:

То есть если мы передавали в скрипт значение в переменной EID, а в параметрах компонента был указан одноименный псевдоним для ELEMENT_ID то в результате выполнения методов InitComponentVariables и MakeComponentVariableAliases в переменной ELEMENT_ID массива arVariables будет значение, переданное в переменной EID.

PS. Для режима SEF=Y данные методы используются несколько по другому, но об этом в следующий раз.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here