как правильно интернационализировать DateControl/DatePicker при работе с RenderAjax или правильная передача параметров

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
MasteRus2
Сообщения: 1
Зарегистрирован: 2017.01.12, 11:40

как правильно интернационализировать DateControl/DatePicker при работе с RenderAjax или правильная передача параметров

Сообщение MasteRus2 »

Здравствуйте, уважаемые коллеги. Имеется проблема:
1. Есть страница, на ней вызывается форма в модальном окне после нажатия на кнопку. Форма содержит поле для ввода дат с компонентом DateControl (или DatePicker, в данном случае не важно).
Проблема: При нажатии на кнопку страница с формой загружается в модальное окно, но DatePicker в подгрузившейся форме не руссифицирован.
При вызове страницы напрямую - датаПикер с правильными региональными настройками (т.е. первый день - понедельник, руссифицирован и т.д.).
Что я делаю не так? По идее метод renderAjax() должен отрисовать подключаемый view со всеми стилями/скриптами на запрос, но у меня такое ощущение что этого не происходит, либо теряются некоторые параметры
Контроллер:

Код: Выделить всё

public function actionIndex()
{
...
}

public function actionCreatemodalsuperform()
    {
        $model = new mysuperForm();
        $post=\Yii::$app->request->post();
        if ($post) 
        {
           ...
        }
        else {
                return $this->renderAjax('createmodalsuperform', [
                    'model' => $model,
                ]);
            }
    }


Страница вызова формы через Ajax

views\index.php
...

Код: Выделить всё

$this->registerJs('
$(function(){
    $("#createModalSuperformButton").click(function(){
        $("#createNewModalSuperform").modal("show").find("#modalSuperform").load($(this).attr("value"));
    });
});
', yii\web\View::POS_END);
?>
...
 <?= Html::button('<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>',
       [
        'value'=>Url::to('/fund/createsuperform'),
       'class' => 'btn buttonaddfund btn-earning text-center buttonblock',
       'id' => 'createModalSuperformButton'
       ]) ?>
                
                <?php
                    Modal::begin([
                     'id' => 'createNewFundEarningModal',
                     'size'=>'modal-xs',
                    ]);
                    echo "<div id='modalContentEarning'></div>";
                    Modal::end();
                ?>

Страница c формой

views\createmodalsuperform.php

Код: Выделить всё

  <?php
...
use yii\widgets\ActiveForm;
use kartik\datecontrol\DateControl;

?> 

<div class="super-form">

    <?php $form = ActiveForm::begin( ['options' => ['enctype' => 'multipart/form-data']]); ?>
....
        <?= $form->field($model, 'date_created')->widget(FixedDateControl::classname(), [
        'type'=>DateControl::FORMAT_DATE,
        'ajaxConversion'=>true, 
        'language' => 'ru',

        'options' => [
            'class' => 'pull-right',
            'pluginOptions' => [
                'autoclose' => true,

            ],
            'removeButton' => false,
        ],
        'saveTimezone' => 'UTC',
        'displayTimezone' => 'UTC',

        ])->label(false);?>
....    
    <?php ActiveForm::end(); ?>

</div>
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

Re: как правильно интернационализировать DateControl/DatePicker при работе с RenderAjax или правильная передача параметр

Сообщение Cacatuidae »

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

Достался проект, где так же используется данный виджет kartik-v/yii2-datecontrol
И мне вот непонятно, для чего автор виджета обнуляет таймзону для режима "отображение даты" https://github.com/kartik-v/yii2-dateco ... l.php#L370
Из-за этого дата 1488229200 с в формате Unix Timestamp выводится в данном виджете как 27.02.2017, хотя на самом деле эту дату нужно выводить как 28.02.2017.
Через Yiiшный форматор выводится правильно, так же как и через нативную функцию date().
Никто не сталкивался с этим? И может кто видет почему автор так сделал :shock:
Ответить