InitComponentVariables
Описание и параметры
void InitComponentVariables( string componentPage , array arComponentVariables , array arVariableAliases , array & arVariables );
Метод служит для поддержки псевдонимов переменных в комплексных компонентах (как в ЧПУ режиме, так и в обычном). Метод восстанавливает истинные переменные из $_REQUEST на основании их псевдонимов. Статический метод.
Параметры
Параметр | Описание |
---|---|
componentPage | Для ЧПУ режима: код шаблона пути, который был получен методом CComponentEngine::ParseComponentPath. Если компонент работает не в ЧПУ режиме, этот параметр должен быть равен False. |
arComponentVariables | Массив имен переменных, которые компонент может получать из запроса. Этот параметр имеет вид array("имя переменной 1", "имя переменной 2", ...). |
arVariableAliases | Массив псевдонимов переменных. Для режима ЧПУ имеет формат: array( "код шаблона пути 1" => array( "название переменной 11" => "псевдоним переменной 11", "название переменной 12" => "псевдоним переменной 12", * * * ), "код шаблона пути 2" => array( "название переменной 21" => "псевдоним переменной 21", "название переменной 22" => "псевдоним переменной 22", * * * ), * * * )Для не ЧПУ режима: array( "название переменной" => "псевдоним переменной", * * * ) |
arVariables | Переменная, в которой возвращаются восстановленные переменные. |
Смотрите также
Пример
// Для ЧПУ режима // В этой переменной будем накапливать значения истинных переменных $arVariables = array(); // Соберем массив шаблонов путей из массива шаблонов путей // "по-умолчанию" $arDefaultUrlTemplates404 // и массива, переданного во входных параметрах $arParams["SEF_URL_TEMPLATES"] $arUrlTemplates = CComponentEngine::MakeComponentUrlTemplates($arDefaultUrlTemplates404, $arParams["SEF_URL_TEMPLATES"]); // Соберем массив псевдонимов переменных из массива псевдонимов // "по-умолчанию" $arDefaultVariableAliases404 // и массива, переданного во входных параметрах $arParams["VARIABLE_ALIASES"] $arVariableAliases = CComponentEngine::MakeComponentVariableAliases($arDefaultVariableAliases404, $arParams["VARIABLE_ALIASES"]); // Определим код шаблона, которому соответствует текущая запрошенная страница $componentPage = CComponentEngine::ParseComponentPath( $arParams["SEF_FOLDER"], $arUrlTemplates, $arVariables ); // Если запрошенная страница не соответствует ни одному шаблону, // то установим явно что показывать if (StrLen($componentPage) <= 0) $componentPage = "list"; // Теперь у нас установлен код шаблона пути и переменные, // которые пришли в виде пути к запрошенной // странице, записаны в $arVariables // Восстановим переменные, которые пришли в параметрах запроса // и допишем их в $arVariables CComponentEngine::InitComponentVariables($componentPage, $arComponentVariables, $arVariableAliases, $arVariables); // Теперь на основании кода шаблона пути $componentPage // и истинных переменных $arVariables // можно определить, какую страницу шаблона компонента нужно показать if ($componentPage == "element") $componentPage = "element"; elseif ($componentPage == "section1" || $componentPage == "section2") $componentPage = "section"; else $componentPage = "list"; $arResult = [ 'FOLDER' => $SEF_FOLDER, 'URL_TEMPLATES' => $arUrlTemplates, 'VARIABLES' => $arVariables, 'ALIASES' => $arVariableAliases, ]; $this->IncludeComponentTemplate($componentPage); );
// Для не ЧПУ режима // В этой переменной будем накапливать значения истинных переменных $arVariables = array(); // Соберем массив псевдонимов переменных из массива псевдонимов // "по-умолчанию" $arDefaultVariableAliases // и массива, переданного во входных параметрах $arParams["VARIABLE_ALIASES"] $arVariableAliases = CComponentEngine::MakeComponentVariableAliases($arDefaultVariableAliases, $arParams["VARIABLE_ALIASES"]); // Восстановим переменные, которые пришли в параметрах запроса // и допишем их в $arVariables CComponentEngine::InitComponentVariables(False, $arComponentVariables, $arVariableAliases, $arVariables); // Теперь на основании истинных переменных $arVariables // можно определить, какую страницу шаблона компонента нужно показать $componentPage = ""; if (IntVal($arVariables["ELEMENT_ID"]) > 0) $componentPage = "element"; elseif (IntVal($arVariables["IBLOCK_ID"]) > 0 || IntVal($arVariables["SECTION"]) > 0) $componentPage = "section"; else $componentPage = "list"; $this->IncludeComponentTemplate( array( "VARIABLES" => $arVariables, "ALIASES" => $arVariableAliases ), $componentPage );
© «Битрикс», 2001-2024, «1С-Битрикс», 2024