baser cms5でカスタムコンテンツを作成すると「MissingRouteException」エラーが発生しカスタムコンテンツにアクセスできない

【環境情報】
・baserCMSのバージョン:5.0.0
・レンタルサーバー名:オンプレ(centos 7.6, php8.1 )
・使用テーマ: BcThemeSample
・PHPスキル(自己評価):A

以下の手順でカスタムコンテンツを作成
・カスタムコンテンツメニューからテーブルを作成
※テーブルにはテキストエリア(大)を使用
・コンテンツ管理メニューでカスタムコンテンツを作成
・作成したカスタムコンテンツに対してカスタムメニューで作成したテーブルを設定
・メニューから作成したカスタムコンテンツページへアクセス
・「MissingRouteException」エラーが発生し画面が表示されない

@taro こんにちは。

メニューから作成したカスタムコンテンツページへアクセス

これはフロントページにアクセスしたということでしょうか?それとも、カスタムエントリーの一覧や編集画面にアクセスしたということでしょうか?

具体的なURLやエラー画面のスクリーンショットを提供頂くことは可能でしょうか?

@ryuring
ご連絡が遅くなりました。

これはフロントページにアクセスしたということでしょうか?それとも、カスタムエントリーの一覧や編集画面にアクセスしたということでしょうか?

カスタムエントリーの一覧にアクセスした形になります。
URLに関してはご提供が難しいのですが、エラー画面のキャプチャとエラーログの内容を記載いたします。

エラーログのエラー

error: [Cake\Routing\Exception\MissingRouteException] A route matching "/js/admin/vendors/jquery.jstree-3.3.8/themes/proton/style.min.css" could not be found. in /ドキュメントルート/vendor/baserproject/baser-core/src/Routing/RouteCollection.php on line 197

他にご提示したほうがよいものがありましたら教えていただいてもよろしいでしょうか。

以上ご確認の程よろしくお願いいたします。

「いいね!」 1

/baser/admin/bc-custom-content/custom_entries/index/8 が無効とのことですが2点確認お願いします。

  1. テーブルの存在確認
    /baser/admin/bc-custom-content/custom_tables/index にアクセスした際に No8 のテーブルは存在しますか?

  2. デバッグモードでの表示確認
    下記ページを参考にデバッグモードに切り替えて表示がどう変わるか教えてください。
    デバッグ方法 | baserCMS Documentation

@ryuring
確認が遅くなりました。

→こちらに関してですが、デバッグモードで実行したところ以下のエラーが表示されました。

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'baser_test.test_custom_entry_8_test456' doesn't exist

DBを確認したところ確かに custom_entry_8_test456 のテーブルはありましたが、 test_custom_entry_8_test456 のテーブルは存在していませんでした。

カスタムコンテンツは以下の手順で作成しておりますが、なにか手順等間違っていたりしますでしょうか?

  1. 設定 > カスタムコンテンツ でカスタムコンテンツを作成
  2. コンテンツ管理 からカスタムコンテンツを作成
  3. 作成したカスタムコンテンツの設定画面にアクセスし、テーブルに1で作成したコンテンツを設定し、保存ボタンをクリック

以上ご確認の程よろしくお願いいたします。

@taro config/install.php において、Datasources.defaultprefixtest_ と記述があったりしますか??

→確認しましたところ記述がありました。

@taro それを空文字に変更してください。

また、データベース上のテーブルについて、「test_」がついたテーブルは存在してください。

→空文字にしたところ以下のエラーが表示されました。

Base table or view not found: 1146 Table 'baser_test.sites' doesn't exist

おそらくDB場は test_sites のテーブルになっているからなような気がしております。
※テーブル上からも test_ を削除したほうが良かったでしょうか?

以上ご確認の程よろしくお願いいたします。

@taro

テーブル上からも test_ を削除したほうが良かったでしょうか?

そのようにお願いします。

仮説ですが、インストール時に「test_」というプレフィックスを設定してインストールされていて、その後、カスタムコンテンツをインストールする段階で、テーブルに「test_」というプレフィックスが付かないというバグになっているのではと考えています。

こちら引き続き調査してきますが、まずは手動で対応してみていただけますか?

「いいね!」 1

→ご確認ありがとうございます。
手動でDB上から test_ を削除したところエラーになってアクセスできなかったカスタムコンテンツにアクセス・データの登録が行えました。

→インストール時に prefixtest_ で指定してインストールを行っています。
お時間のある時で構いませんので調査の方よろしくお願いいたします。 :man_bowing:

以上よろしくお願いいたします。

「いいね!」 1

@taro ありがとうございます。取り急ぎ、Issue を発行しておきました。

「いいね!」 1

@taro 調査したのですが、再現できませんでした。
もしかしたら、5.0.1 もしくは、現在の開発版のどこかのタイミングで解消されているようです。

→調査ありがとうございます。
こちらでも5.0.1(公式サイトからダウンロード)で改めて確認してみましたが、やはりカスタムコンテンツを作成すると prefix なしのテーブルが作成されました。
※その状態でアクセスするとやはりエラーになりました。
作成されたテーブルに手動で prefix を追加すると正しくアクセスできるようになりました。

もしかしたらこちらの環境(おま環)でのみ起きるのかもしれません。。。
test_site_ で試してみましたが、どちらのパターンでも同様の現象でした。。。

こちらで確認した挙動としては「設定」 > 「カスタムコンテンツ」からカスタムコンテンツを作成後DBを確認するとこの時点で prefix なしテーブルが作成されておりました。

環境依存の可能性もある気がしていますので一度別の環境でも試してみたいと思います。

以上よろしくお願いいたします。

となると、GitHub上の開発版ですかねえ。今のところ開発環境(dev-5ブランチの最新版)では再現できませんでした。

@taro こちらの件、わかりました。
カスタムコンテンツプラグインをインストールしたタイミングで、プレフィックスが付かないと勝手に思い込んでいたのですが、カスタムフィールドなどは正常に利用できて、カスタムテーブルを作成する際に対象テーブルにプレフィックスが付かないということなんですね。

失礼しました。最新の開発版でも再現できましたので、次のコミットで解消しています。

確認よろしくお願いします。

→そうです!
うまく現象等お伝えできずに申し訳ありません。。。
修正いただいた件は別途確認したいと思います。

「いいね!」 1