提问者:小点点

由于yii2中的if语句而导致的获取分析错误


所以我有了这个代码:

<?= GridView::widget([
    'dataProvider' => $detProvider,
    //'filterModel' => $searchModel1,
    if ($detProvider !== null) {
       'columns' => [
        ['class' => 'yii\grid\SerialColumn'],

       // 'id',
        'first_name',
        'last_name',
        'email',
        /*'application_id',*/

        [
                'class' => 'yii\grid\ActionColumn',
                'template' => '{view}',
                'buttons' => [
                    'view' => function ($url, $model, $key) {
                        return Yii::$app->user->can('viewApplicant') ? Html::a(Html::tag('span', '', ['class' => "glyphicon glyphicon-eye-open"]), $url, ['title' => Yii::t('yii', 'View')]):"";
                    },
                    /*'edit' => function ($url, $model, $key) {
                        return Yii::$app->user->can('editApplicant') ? Html::a(Html::tag('span', '', ['class' => "glyphicon glyphicon-pencil"]), $url, ['title' => Yii::t('yii', 'Edit')]):"";
                    },
                    'delete' => function ($url, $model, $key) {
                        return  Yii::$app->user->can('deleteApplicant') ? Html::a(Html::tag('span', '', ['class' => "glyphicon glyphicon-trash"]), $url, ['title' => Yii::t('yii', 'Delete'), 'data' => ['method' => 'post', 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), 'params' => ['id' => $model['id'], '_csrf' => Yii::$app->request->csrfToken]]]):"";
                    },*/
                    ],
                            'urlCreator' => function($action, $model, $key, $index) {
                    if ($action === 'view') {
                        $url = 'index.php?r=admin/applicant/view&id=' . $model['id'];
                        return $url;
                    }
                }

                    ],
    ], 
    }

]); ?>

我之所以使用if语句,是因为我希望这个特定的表只在detProvider不为空时显示。 但是我得到了一个解析错误;

ParseError语法错误,意外的“if”(T_IF),应为“]”

有人能帮忙吗? 我做错了什么?? 我对yii2和PHP还是新手。


共1个答案

匿名用户

如果您希望仅在dataProvider不为nulll时才显示gridview,那么您应该这样检查

    <?php 

        if ($detProvider !== null) {
            echo GridView::widget([
            'dataProvider' => $detProvider,
            //'filterModel' => $searchModel1,

               'columns' => [
                ['class' => 'yii\grid\SerialColumn'],

               // 'id',
                'first_name',
                'last_name',
                'email',
                /*'application_id',*/

                [
                        'class' => 'yii\grid\ActionColumn',
                        'template' => '{view}',
                        'buttons' => [
                            'view' => function ($url, $model, $key) {
                                return Yii::$app->user->can('viewApplicant') ? Html::a(Html::tag('span', '', ['class' => "glyphicon glyphicon-eye-open"]), $url, ['title' => Yii::t('yii', 'View')]):"";
                            },
                            /*'edit' => function ($url, $model, $key) {
                                return Yii::$app->user->can('editApplicant') ? Html::a(Html::tag('span', '', ['class' => "glyphicon glyphicon-pencil"]), $url, ['title' => Yii::t('yii', 'Edit')]):"";
                            },
                            'delete' => function ($url, $model, $key) {
                                return  Yii::$app->user->can('deleteApplicant') ? Html::a(Html::tag('span', '', ['class' => "glyphicon glyphicon-trash"]), $url, ['title' => Yii::t('yii', 'Delete'), 'data' => ['method' => 'post', 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), 'params' => ['id' => $model['id'], '_csrf' => Yii::$app->request->csrfToken]]]):"";
                            },*/
                            ],
                                    'urlCreator' => function($action, $model, $key, $index) {
                            if ($action === 'view') {
                                $url = 'index.php?r=admin/applicant/view&id=' . $model['id'];
                                return $url;
                            }
                        }

                            ],
                ], 
            ]); 
        }
    ?>