Yii2页面首次加载内容显示异常,刷新后恢复正常求助
问题描述
- 首次访问页面时内容并非总能正常显示,刷新页面后加载恢复正常。
- 错误加载场景下,页面显示来源页面(Home/Projects)的面包屑导航、标题「Projects」及按钮「Creating a New Project」,而正确内容应为「Pattern : Project」名称;页面表格和保存按钮可正常加载,即使表头信息错误,修改表格条目并保存的操作仍能正常执行。
- 另一页面存在相同问题:不仅表头信息(面包屑、Project、Project按钮)错误,下方表格也显示异常。
环境信息
- Yii2 版本:2.0.47
- PHP 版本:8.1.13
- 已通过 Composer 完成全量更新
视图文件代码
<?php use app\models\UserPatternProgress; use yii\helpers\Html; use yii\widgets\ActiveForm; use yii\widgets\Pjax; use yii\grid\GridView; ?> <h1><?= Html::encode($patternName.': '.$projectName) ?></h1> <div class="user-param-index"> <?php Pjax::begin(); ?> <?php $form = ActiveForm::begin([ 'id' => 'user_param-form', ]); ?> <?php $gridColumns = [ ['class' => 'yii\grid\SerialColumn'], [ 'attribute'=>'id', 'visible' => 0, ], [ 'attribute'=>'param_id', 'header'=>'Options', 'value'=> function($model){ $paramModel = new app\models\PatternParam(); $inputType = $paramModel->getParamInputType($model->param_id); switch ($inputType) { case 1: return $paramModel->getParamSub2Name($model->param_id); break; case 2: $progress=FALSE; $name = $paramModel->getParamSub1Name($model->param_id); if ($name==='SIZE') { $userPatProgrModel = new UserPatternProgress(); $progress = $userPatProgrModel->getUserProgressDoneCtByProject($model->project_id)>0; if($progress) {$name.=' - Any change in the selected value may lead to loss of progress!';} } return $name; break; } }, ], [ 'attribute' => 'param_value', 'header'=>'Personalize it!', 'format' => 'raw', 'value' => function ($model) { $patParam = new app\models\PatternParam(); $inputType = $patParam->getParamInputType($model->param_id); $name = 'UserParam['.$model->id.'][param_value]'; switch ($inputType) { case 1: return Html::textInput($name,\yii\helpers\Html::encode($model->param_value),['class' => 'form-control']); break; case 2: $selection = \yii\helpers\Html::encode($model->param_value); $model2 = new \app\models\PatternParam(); $keyItems = $model2->getParamsAsArray($model->param_id); $options = ['class' => 'form-multiselect']; return Html::dropDownList($name, $selection, $keyItems, $options); break; } }, ], ]; ?> <?php Yii::$app->session->getFlash('error'); echo GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => $gridColumns, ]); ?> <p> <?= Html::submitButton('Save', ['class' => 'btn btn-primary']) ?> </p> <?php ActiveForm::end(); ?> <?php Pjax::end(); ?> </div>
补充说明
- 错误显示状态:页面显示Projects标签及按钮
- 正确显示状态:页面顶部为项目名称
- 页面加载入口:通过带按钮的GridView加载页面
内容的提问来源于stack exchange,提问作者jophilly
相关产品推荐
相关产品推荐

