php - 无法从 yii 中的控制器渲染视图
问题描述
在将我的站点移动到新服务器后,我试图从控制器渲染视图,但它在这里不起作用。当我在控制器中显示某些内容而不渲染视图时,它可以工作。意味着我可以访问控制器方法。它在我的旧域中运行良好。我正在使用 yii 和 wordpress,我的 yii 项目位于子目录中。主布局已成功呈现,但视图/站点中的视图未成功呈现。
return $this->render('index', [
'names' => $names,
'phones' => $phones
]);
这是我的视图代码
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\grid\GridView;
use yii\helpers\Url;
use app\models\StopTimes;
use app\controllers\SiteController;
yii::$app->assetManager->forceCopy = true;
$isActiveHide = $_GET['debug'] == 'yes' ? false: true ;
$debugMode = $_GET['debug'] == 'yes' ? true: false ;
echo "it is here";
如果我尝试回显 $names 或 $phones 那么它会准确显示数据。
我错了。这里它显示“发生了内部服务器错误”有没有办法得到确切的错误,而不是一般错误?
解决方案
回答你最初的问题'有没有办法得到确切的错误,而不是一般错误?
调试工具: 1. Echo's - 你的Controller 的内容是什么?您如何尝试从控制器进行调试?更具体地说,仔细检查您没有在控制器中使用 echo,因为旧版本的 yii2 可以接受,但在更高版本中不可接受,并且在控制器中使用 echo 可能会导致内部服务器错误。Yii2 issue 16014 最好使用类似的东西:
Yii::$app->session['myvariable'] = $names;
代替:
echo $names;
从您的控制器中,您可以在状态...请求...会话下的调试工具栏中查看。在您的 composer.json 中升级您的 Yii 版本并运行 composer update 以便服务器的 php 版本与更高版本的 yii2 兼容。
- 如果您可以访问您的视图,var_dumps($names) 将很有用。
- 当您可以访问您的视图时。按 F12。使用 Dom Explorer,您将能够隔离特定部分。
请注意按 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" } }
推荐阅读
- c# - C#
and
doesn't show up in intellisense - java - H2 数据库数据库降低无效连接设置 (2019)
- regex - Jmeter - 基于正则表达式提取器多次运行样本
- django - 如何在 Django 中使用查询集中的选项加载表单
- r - RStan 在精确和变分贝叶斯模式下给出不同的结果
- angular - 如何使用 TestBed 和 Jasmine 在 NativeScript 中实现单元测试?
- html - 为什么我的下拉菜单需要点击两次才能打开?
- javascript - 使用JS在SVG中的组内绘制元素
- swift - CGAffineTransform - 使用后像素化
- node.js - POST请求在很长一段时间后被中止