PowerCMS X のビューにアクセスできない場合の対処方法
PowerCMS X を構築していると、ビューのデータにアクセスできない時があります。500エラーになったり、プレビュー画面が表示されたりする事象です。
原因は該当のビューで使用していたコードに問題があるためと思います。
例えば、モデルのカラムを削除した、モデル自体を削除したなどで、そのタグが使えない状態だったり、そもそも閉じタグがなかったり、IF文の中の不適切な場所に <mt:else>が置かれているなど、原因はさまざまです。
回避方法1
環境変数に「"compile_check" : false」を設定してください。
参考:環境変数の設定方法
これだけでビューにアクセスできるようになったと思います。
管理画面で compile_check を true で設定すると保存後に値が 0 になるかと思いますが、そこは気にしないでください。
下記の「回避方法2」は試さないで大丈夫です。
回避方法2
※ 作業前に class.Prototype.php をバックアップしておくことをオススメします。
PowerCMS X アプリケーションディレクトリ直下にある class.Prototype.php を開きます。
下記のコードの場所にコメントアウトを入れてください。2箇所あります。
$ctx->vars['can_delete'] = $app->can_do( $model, 'delete', $obj );
if ( $model === 'template' ) {
if ( $app->compile_check ) {
$regex = '<\${0,1}' . $ctx->prefix;
↓ /* を追加
$ctx->vars['can_delete'] = $app->can_do( $model, 'delete', $obj );
if ( $model === 'template' ) {
/*
if ( $app->compile_check ) {
$regex = '<\${0,1}' . $ctx->prefix;
$ctx->vars['parser_errors'][]
= $app->translate( 'Writing PHP code in views is not allowed.' );
}
}
}
}
$ctx->vars['_has_mapping'] = isset( $ctx->vars['_has_mapping'] ) ? $ctx->vars['_has_mapping'] : 1;
}
} else {
↓ */ を追加
$ctx->vars['parser_errors'][]
= $app->translate( 'Writing PHP code in views is not allowed.' );
}
}
}
}
*/
$ctx->vars['_has_mapping'] = isset( $ctx->vars['_has_mapping'] ) ? $ctx->vars['_has_mapping'] : 1;
}
} else {
class.Prototype.php を保存して、ビューにアクセスできることを確認します。ビューにアクセスしたら、プレビューボタンをクリックして、期待する結果になっているか確認します。
大丈夫そうなら、コメントアウトを削除して元に戻します。
この記事が気に入ったらサポートをしてみませんか?