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

wkyowqbh  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(217)

我试图渲染视图从控制器后,我的网站移动到新的服务器,但它不工作在这里。当我显示的东西在控制器没有渲染视图,然后它的工作。这意味着我可以访问控制器的方法。它是在我的旧域工作得很好。我正在使用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,则它会准确显示数据。
我错在哪里。这里显示“发生了内部服务器错误”有没有办法得到确切的错误是什么,而不是一般的错误?

nafvub8i

nafvub8i1#

为了回答你最初的问题“有没有办法得到确切的误差,而不是一般的误差?”
调试工具:1. Echo 's-Controller的内容是什么?您如何尝试从Controller进行调试?更具体地说,请仔细检查您没有在Controller中使用echo' s,因为这在旧版本的yii 2中是可以接受的,但在新版本中是不可以接受的,并且在Controller中使用echo 's会导致内部服务器错误。Yii2 issue 16014最好使用类似以下的内容:

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

而不是:

echo $names;

在composer.json中升级您的Yii版本并运行composer update,使服务器的php版本与yii 2的后续版本兼容。
1.如果您可以访问视图,var_dumps($names)将非常有用。
1.当您可以访问视图时,请按F12。使用Dom Explorer,您将能够隔离特定的部分。
1.注意按下F12后看到的值的格式。花括号中的多个值是Json,必须解码到php数组中,然后进一步隔离,直到提取出实际的变量。

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

在这里,当使用F12查看时,editableKey是Json格式。我们使用Json进行解码,并进一步编码以隔离$id值。
内部服务器错误通常发生在Json值未解码时,如上面的示例所示。
1.升级你的Yii 2。这里是一个更高级的模板,你可能会觉得有用:

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

fwzugrvs2#

如果你想呈现你的控制器的view.php,

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

    ]);

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

相关问题