我已经使用高级模板安装了最新版本的 yii2。该网站运行良好。由于某种原因,Gii 生成工具被卡住并且在单击预览按钮后没有按预期反应。它没有显示带有“生成”按钮的新表单,而是显示相同的表单,没有任何关于正在发生的事情的消息。
使用 xdebug 我可以在 DefaultController 的“actionView”方法中看到未设置数组值 $_POST['preview'],即 $_POST 数组中不存在它。我没有更改视图表单中的任何内容,一切看起来都很好。提交按钮的名称为“preview”,表单已提交,但 $_POST 数组未填充提交按钮的值。因此,控制器不会继续进行生成过程的后续步骤。
public function actionView($id)
{
$generator = $this->loadGenerator($id);
$params = ['generator' => $generator, 'id' => $id];
// ###############################################################################
// ### THIS IF STATEMENT IS NOT TRUE BECAUSE $_POST['preview'] IS NOT SET !!! ###
// ###############################################################################
if (isset($_POST['preview']) || isset($_POST['generate'])) {
// ###############################################################################
if ($generator->validate()) {
$generator->saveStickyAttributes();
$files = $generator->generate();
if (isset($_POST['generate']) && !empty($_POST['answers'])) {
$params['hasError'] = !$generator->save($files, (array) $_POST['answers'], $results);
$params['results'] = $results;
} else {
$params['files'] = $files;
$params['answers'] = isset($_POST['answers']) ? $_POST['answers'] : null;
}
}
}
return $this->render('view', $params);
}
有谁知道可能导致这种情况的原因是什么?我有一种预感,这是我忽略的非常简单的事情,但我从来没有遇到过表单中的 POST 变量没有被发送到服务器的情况。