无法在yii中从控制器呈现视图



在将我的站点移动到新服务器后,我试图从控制器渲染视图,但在这里不起作用。当我在控制器中显示一些东西而不渲染视图时,它就工作了。意味着我可以访问控制器方法。它在我的旧域名上运行良好。我在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的更高版本兼容。

如果您可以访问视图,
  • 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值没有像上面的例子那样解码时,经常会出现内部服务器错误。

    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"
      }
      }
      

    如果你想渲染控制器的view.php,那么

    return $this->render('view', [
    'names' => $names,
    'phones' => $phones
    ]);
    

    此外,无论您在返回时传递什么参数,都可以在视图文件上访问

    最新更新