egvimar
@egvimar
Истины нет, существуют только версии...

Как формируется INPUT в Битрикс?

Как в /bitrix/catalog.filter формируется <?= $arItem["INPUT"] ?>? Сейчас он уже выводится готовый, а мне нужно к нему еще добавить placeholder и свой class? Где найти его шаблон?
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
/** @var array $arParams */
/** @var array $arResult */
/** @global CMain $APPLICATION */
/** @global CUser $USER */
/** @global CDatabase $DB */
/** @var CBitrixComponentTemplate $this */
/** @var string $templateName */
/** @var string $templateFile */
/** @var string $templateFolder */
/** @var string $componentPath */
/** @var CBitrixComponent $component */
$this->setFrameMode(true);
?>

<form name="<? echo $arResult["FILTER_NAME"] . "_form" ?>" action="<? echo $arResult["FORM_ACTION"] ?>" method="get"
      class="section_position__form_sp sp_div_block">
    <h2 class="section_position__form_sp__h2">Фильтр для поиска врачей</h2>

    <? foreach ($arResult["ITEMS"] as $arItem): ?>
        <? if (array_key_exists("HIDDEN", $arItem)): ?>
            <?= $arItem["INPUT"] ?>
        <? else: ?>
            <div class="sp_div_block_1">
                <label class="section_position__form_sp__label"><?= $arItem["NAME"] ?></label>
                <?= $arItem["INPUT"] ?>
            </div>
        <? endif ?>
    <? endforeach; ?>

    <div class="sp_div_block_6">
        <input type="submit" name="set_filter" value="Найти" class="section_position__form_sp__submit"/>
        <input type="hidden" name="set_filter" value="Y"/>
        <input type="submit" name="del_filter" value="Сбросить фильтр" class="section_position__form_sp__button"/>
    </div>

</form>
  • Вопрос задан
  • 1015 просмотров
Пригласить эксперта
Ответы на вопрос 2
ragnar_ok
@ragnar_ok
Не "недра ядра", конечно, но если вы хотите использовать $arItem["INPUT"], то компонент кастомизировать придется. Input'ы формируются в component.php:
bitrix:catalog.filter: /bitrix/components/bitrix/catalog.filter/component.php:411
(Привет, MVC!).

Вы можете обойтись без кастомизации компонента. Для этого просто изучите $arResult компонента. Там вы найдете все, что нужно для формирования input'a (например, массив LIST для атрибута value). Избавьтесь от $arItem["INPUT"] в своем шаблоне и сформируйте свой input. В Вашем случае это будет выглядеть примерно так:
<?foreach ($arItem["LIST"] as $key => $value):?>
    <div class="sp_div_block_1">
        <label class="section_position__form_sp__label"><?= $arItem["NAME"] ?></label>
        <input type="radio" name="<?=$arItem["INPUT_NAME"]?>" value="<?=htmlspecialcharsBx($key)?>"/>
    </div>
<?endforeach;?>
Ответ написан
Комментировать
pro6ka
@pro6ka
web developer
Инпут формируется функцией, скрытой в недрах ядра. Чтобы изменит её поведение придётся как минимум компонент переопределять. Лучше вывод в preg_replase передать и регулярками заменить/дописать, что нужно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы