在将我的站点移动到新服务器后,我试图从控制器渲染视图,但在这里不起作用。当我在控制器中显示一些东西而不渲染视图时,它就工作了。意味着我可以访问控制器方法。它在我的旧域名上运行良好。我在wordpress中使用yii,我的yii项目在子目录中。主布局已成功渲染,但视图/站点中的视图未成功渲染。
return $this->render('index', [
'names' => $names,
'phones' => $phones
]);
这是我的视图代码
<?php
use yiihelpersHtml;
use yiibootstrapActiveForm;
use yiigridGridView;
use yiihelpersUrl;
use appmodelsStopTimes;
use appcontrollersSiteController;
yii::$app->assetManager->forceCopy = true;
$isActiveHide = $_GET['debug'] == 'yes' ? false: true ;
$debugMode = $_GET['debug'] == 'yes' ? true: false ;
echo "it is here";
如果我尝试回显$names或$phone,那么它会准确地显示数据。
我错在哪里了。此处显示"发生内部服务器错误"有没有一种方法可以得到确切的误差,而不是一般的误差?
回答您最初的问题"有没有办法得到确切的错误,而不是一般错误?">
调试工具:1.Echo的-控制器的内容是什么?您是如何尝试从控制器进行调试的?更具体地说,请仔细检查您是否在控制器中使用echo,因为这在旧版本的yii2中是可以接受的,但在更高版本中是不能接受的,并且在控制器中的使用echo可能会导致内部服务器错误。Yii2第16014期最好使用类似的东西
Yii::$app->session['myvariable'] = $names;
代替:
echo $names;
从您的控制器,您可以在调试工具栏的"状态…"下查看该控制器。。。要求一场在composer.json中升级Yii版本,并运行composer更新,以便服务器php版本与yii2的更高版本兼容。
如果您可以访问视图,请注意按F12后查看的值的格式。花括号中的多个值是Json,必须解码为php数组,然后进一步隔离,直到提取出实际变量,例如
$translatedId = Yii::$app->request->post('editableKey');
$json = Json::decode($translatedId, true);
$id = $json['id'];
当使用F12查看时,editableKey为Json格式。我们使用Json来解码并进一步编码以隔离$id值。
当Json值没有像上面的例子那样解码时,经常会出现内部服务器错误。
升级Yii2。这里有一个更高级的模板,你可能会觉得有用:
"minimum-stability": "stable", "require": { "php": ">=7.4.1", "yiisoft/yii2": "~2.0.33", "yiisoft/yii2-bootstrap": "~2.0.9", "bower-asset/bootstrap": "~3.4.1", "npm-asset/jquery": "^2.2", "bower-asset/ladda": "0.9.8", "yiisoft/yii2-bootstrap4": "~2.0.8", "yiisoft/yii2-swiftmailer": "~2.0.0 || ~2.1.0", "sjaakp/yii2-pluto": "*", "himiklab/yii2-recaptcha-widget" : "*", "bizley/cookiemonster": "*", "vlucas/phpdotenv": "*", "insolita/yii2-migration-generator": "~3.1", "ifsnop/mysqldump-php": "*", "supplyhog/yii2-clipboardjs" : "dev-master", "devgroup/yii2-tag-dependency-helper": "*", "warrence/yii2-kartikgii": "dev-master", "kartik-v/yii2-bootstrap4-dropdown": "@dev", "kartik-v/yii2-editable": "@dev", "kartik-v/yii2-grid":"@dev", "kartik-v/yii2-widget-timepicker": "@dev", "kartik-v/yii2-date-range": "*", "kartik-v/yii2-social": "@dev", "kartik-v/yii2-dynagrid": "dev-master", "kartik-v/yii2-tree-manager": "@dev", "kartik-v/yii2-mpdf":"dev-master", "kartik-v/bootstrap-star-rating": "@dev", "kartik-v/yii2-slider": "dev-master", "kartik-v/yii2-number" : "@dev", "mpdf/mpdf":"~8.0.0", "2amigos/yii2-google-maps-library" : "*", "2amigos/yii2-ckeditor-widget" : "~2.1", "seostats/seostats": "dev-master", "linslin/yii2-curl":"*", "paypal/rest-api-sdk-php": "*", "monolog/monolog":"*", "ruskid/yii2-csv-importer": "dev-master", "phpoffice/phpspreadsheet":"*", "league/omnipay": "*", "paragonie/random_compat": "*", "symfony/process": "3.0.*@dev", "google/cloud-translate": "*" }, "require-dev": { "yiisoft/yii2-debug": "~2.1.0", "yiisoft/yii2-gii": "~2.1.0", "yiisoft/yii2-faker": "~2.0.0", "codeception/codeception": "^4.0", "codeception/verify": "~0.5.0 || ~1.1.0" }, "config": { "process-timeout": 1800 }, "fxp-asset": { "installer-paths": { "npm-asset-library": "vendor/npm-asset", "bower-asset-library": "vendor/bower-asset" } }, "repositories": [ { "type": "composer", "url": "https://asset-packagist.org" } ], "scripts": { "post-install-cmd": "php init --env=Development --overwrite=n" } }
如果你想渲染控制器的view.php,那么
return $this->render('view', [
'names' => $names,
'phones' => $phones
]);
此外,无论您在返回时传递什么参数,都可以在视图文件上访问