Yii2 可编辑 仅主机上的内部服务器错误(Class yii\helpers\json 未找到)
Yii2 editable Internal server error on host only (Class yii\helpers\json not found)
我有一个带有 Dynagrid 的 Yii2 高级应用程序,其中有一列可编辑 (http://demos.krajee.com/editable)
我在本地 PC 上写的,可以编辑。
我在我的主机上复制了文件,现在在尝试使用可编辑小部件更新字段值时出现内部服务器错误。
调查告诉我错误发生的地方
POST http://.../backend/web/index.php?r=trackdata%2Findex 500 (Internal Server Error)
send @ jquery.js:9177
...
点击这个 jquery.js 我看到了 :
xhr.send( options.hasContent && options.data || null ); with the red error flag
引入一个console.log(xhr)时;在 xhr.send 指令之前,我看到:
response:"<pre>PHP Fatal Error 'yii\base\ErrorException' with message 'Class 'yii\helpers\json' not found' ↵↵in .../backend/controllers/TrackdataController.php:63↵↵Stack trace:↵#0 [internal function]: yii\base\ErrorHandler->handleFatalError()↵#1 {main}</pre>"
响应文本
所以原因是:Class yii\helpers\json 没有找到
但是在我的控制器中,我使用 yii json 助手,正如您在我的控制器中看到的那样:
use yii\helpers\json;
...
if (Yii::$app->request->post('hasEditable'))
{
$trackId = Yii::$app->request->post('editableKey');
$model = Trackdata::findOne($trackId);
$out = Json::encode(['output'=>'', 'message'=>'']);
$post = [];
$posted = current($_POST['Trackdata']);
$post['Trackdata'] = $posted;
if ($model->load($post))
{
$model->save();
$output = '';
$out = Json::encode(['output'=>$output, 'message'=>'']);
}
echo $out;
return;
...
这是观点:
<?= DynaGrid::widget([
'columns' => [
...
[
'class' => 'kartik\grid\EditableColumn',
'attribute'=>'vu',
'editableOptions'=> function ($model, $key, $index) {
return [
'displayValueConfig' => [1 => 'Oui', 0 => 'Non'],
'displayValue' => [1 => 'Oui', 0 => 'Non'],
'data' => [1 => 'Oui', 0 => 'Non'],
'value' => 0,
'asPopover' => true,
'header' => 'Vu ',
'inputType' => Editable::INPUT_DROPDOWN_LIST,
];
}
],
...
我不明白为什么我只在主机上而不是在本地 PC 上收到此错误。
任何帮助都会很好!
这是一种奇怪的行为,但尝试 use yii\helpers\Json;
其中 J 是大写的。
我有一个带有 Dynagrid 的 Yii2 高级应用程序,其中有一列可编辑 (http://demos.krajee.com/editable)
我在本地 PC 上写的,可以编辑。
我在我的主机上复制了文件,现在在尝试使用可编辑小部件更新字段值时出现内部服务器错误。
调查告诉我错误发生的地方
POST http://.../backend/web/index.php?r=trackdata%2Findex 500 (Internal Server Error)
send @ jquery.js:9177
...
点击这个 jquery.js 我看到了 :
xhr.send( options.hasContent && options.data || null ); with the red error flag
引入一个console.log(xhr)时;在 xhr.send 指令之前,我看到:
response:"<pre>PHP Fatal Error 'yii\base\ErrorException' with message 'Class 'yii\helpers\json' not found' ↵↵in .../backend/controllers/TrackdataController.php:63↵↵Stack trace:↵#0 [internal function]: yii\base\ErrorHandler->handleFatalError()↵#1 {main}</pre>"
响应文本
所以原因是:Class yii\helpers\json 没有找到 但是在我的控制器中,我使用 yii json 助手,正如您在我的控制器中看到的那样:
use yii\helpers\json;
...
if (Yii::$app->request->post('hasEditable'))
{
$trackId = Yii::$app->request->post('editableKey');
$model = Trackdata::findOne($trackId);
$out = Json::encode(['output'=>'', 'message'=>'']);
$post = [];
$posted = current($_POST['Trackdata']);
$post['Trackdata'] = $posted;
if ($model->load($post))
{
$model->save();
$output = '';
$out = Json::encode(['output'=>$output, 'message'=>'']);
}
echo $out;
return;
...
这是观点:
<?= DynaGrid::widget([
'columns' => [
...
[
'class' => 'kartik\grid\EditableColumn',
'attribute'=>'vu',
'editableOptions'=> function ($model, $key, $index) {
return [
'displayValueConfig' => [1 => 'Oui', 0 => 'Non'],
'displayValue' => [1 => 'Oui', 0 => 'Non'],
'data' => [1 => 'Oui', 0 => 'Non'],
'value' => 0,
'asPopover' => true,
'header' => 'Vu ',
'inputType' => Editable::INPUT_DROPDOWN_LIST,
];
}
],
...
我不明白为什么我只在主机上而不是在本地 PC 上收到此错误。 任何帮助都会很好!
这是一种奇怪的行为,但尝试 use yii\helpers\Json;
其中 J 是大写的。