首页 > 解决方案 > 无法从 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 那么它会准确显示数据。

我错了。这里它显示“发生了内部服务器错误”有没有办法得到确切的错误,而不是一般错误?

标签: phpwordpressyiiyii2

解决方案


回答你最初的问题'有没有办法得到确切的错误,而不是一般错误?

调试工具: 1. Echo's - 你的Controller 的内容是什么?您如何尝试从控制器进行调试?更具体地说,仔细检查您没有在控制器中使用 echo,因为旧版本的 yii2 可以接受,但在更高版本中不可接受,并且在控制器中使用 echo 可能会导致内部服务器错误。Yii2 issue 16014 最好使用类似的东西:

    Yii::$app->session['myvariable']  = $names;

代替:

    echo $names;

从您的控制器中,您可以在状态...请求...会话下的调试工具栏中查看。在您的 composer.json 中升级您的 Yii 版本并运行 composer update 以便服务器的 php 版本与更高版本的 yii2 兼容。

  1. 如果您可以访问您的视图,var_dumps($names) 将很有用。
  2. 当您可以访问您的视图时。按 F12。使用 Dom Explorer,您将能够隔离特定部分。
  3. 请注意按 F12 后查看的值的格式。花括号中的多个值是 Json,必须将其解码为 php 数组,然后进一步隔离,直到提取实际变量,例如。

        $translatedId = Yii::$app->request->post('editableKey');
        $json = Json::decode($translatedId, true);
        $id = $json['id']; 
    

    使用 F12 查看时,editableKey 为 Json 格式。我们使用 Json 进行解码并进一步编码以隔离 $id 值。

当 Json 值没有像上面的示例中那样被解码时,通常会出现内部服务器错误。

  1. 升级你的 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"
       }
    }
    

推荐阅读