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

Доброго дня всем!

Создаем простенькую форму для переключения локали на сайте с одновременной записью выбранной локали в профиль пользователя (для того, чтоб при входе с других устройств у него выбиралась соответствующая локаль, т.к. далеко не все заглядывают к себе в профиль для настроек).

Форма выглядит так (упрощенный вариант):

<form action="" method="post" enctype="multipart/form-data" style="display:inline;" id="lang-selector">
    <select name="profile[locale]" id="language">
        {foreach waLocale::getAll('name') as $language => $lang_name}
            <option value="{$language}" {if $wa->user()->getLocale() == $language} selected="selected"{/if}>
                {$lang_name|escape}
            </option>
        {/foreach}
    </select>
{$wa->csrf()}
<input type="submit">
</form>

Проблема заключается в том, что при отправке формы идет попытка смены локали в профиле юзера, но при этом затрагиваются и поля дня рождения. Если они заполнены, то значения сбрасываются и в профиле вываливается ошибка под этими полями "Неправильная дата". Если поля были пустые у пользователя, то ошибка также появляется. Соответственно, данные дальше не пропускаются, и запрос до БД не доходит. Если в настройках профиля отключить день рождения, то все в порядке.

На сервер уходит такой запрос:

"POST" ... "profile%5Blocale%5D=ru_RU&_csrf=наборцифр.букв"

О дне рождения в запросе не упоминается. Похоже на какую-то ошибку в классах. Какого рожна происходит "вмешательство" в день рождения? И как это дело исправить?

1 ответ

  • 1
    Плебей 30 января 2018 15:43 #

    Помогите, пожалуйста, разобраться. Почему такой пост-запрос:

    ------WebKitFormBoundaryixYOxLuXYCMfkKfp
    Content-Disposition: form-data; name="profile[locale]"
    
    ru_RU
    ------WebKitFormBoundaryixYOxLuXYCMfkKfp
    Content-Disposition: form-data; name="_csrf"
    
    5a705c9c549f17.69438467
    ------WebKitFormBoundaryixYOxLuXYCMfkKfp--

    обнуляет дату рождения в профиле? А, если дата пустая, то выдает ошибку заполения дня рождения.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите