将日期转移到数据库

时间:2019-03-28 12:20:14

标签: mysql yii2

Yii的初学者,在GridView中连接了DatePicker,但是当我设置日期时,数据库中没有任何变化,其中有旧值。我不知道该怎么做才能使数据进入数据库。

查看:

    <?= GridView::widget([

            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => [
                'avito_login',
                'avito_password',
                'Region',
                "City",
                "legal_entity",
                "manager_contact_phone",
                "avito_user_id",
                "teg",

        [
            'label' => 'Date begin subscription',
            'value' => function ($model, $key, $value) {
                return \kartik\date\DatePicker::widget([
                    'name' => 'date_subscription',
                    'model' => $model,
                    'value' => $model->date_subscription,
                    'type' => DatePicker::TYPE_INPUT,
                    'pluginOptions' => [
                        'format' => 'yyyy-mm-dd',
                        'autoclose' => true,
                    ],
'pluginEvents'=>[
                'changeDate'=>"function(e) {[jQuery.ajax({ url: '/admin/clients/date-subscription', type: 'post', contentType: 'application/x-www-form-urlencoded', dataType: 'html', data: { data: this.value }, success: function (data) { alert(data) });
                                 }",
                           ],
                   ]);
                         },
            'format' => 'raw',
        ],

    ?>

控制器

public function actionDateSubscription()
{

    $datesubscription = Yii::$app->request->post('date_subscription');
}

什么也没有发生,日期停止的字段处于活动状态

1 个答案:

答案 0 :(得分:0)

您基本上需要将ajax调用绑定到datepicker,这会将date发送到服务器controller/action,服务器会将新日期更新到数据库中并将响应发送回前端,如果一切正常,它将刷新gridview以反映新日期。

Here 是一个类似的答案,它使用切换开关来更新数据库status列,您可以大致了解该过程。

唯一不同的是,您必须使用pluginEvents选项来指定changeDate事件,并将ajax调用绑定到该事件,如下所示

[
    'label' => 'Date begin subscription',
    'value' => function ($model, $key, $value) {
        return \kartik\date\DatePicker::widget([
            'name' => 'date_subscription',
            'model' => $model,
            'value' => $model->date_subscription,
            'type' => DatePicker::TYPE_INPUT,
            'pluginOptions' => [
                'format' => 'yyyy-mm-dd',
                'autoclose' => true,
            ],
            'pluginEvents'=>[
                'changeDate'=>"function(e) { //call your ajax fuction here }",
            ]
        ]);
    },
    'format' => 'raw',
],

请注意:如果您已将date_subscription设为空/空,请确保同时在clearDate事件中调用ajax和changeDate

有关事件的完整列表,请参见DOCS