テーマのURL取得の関数について

【環境情報】
・baserCMSのバージョン:5.0.15
・レンタルサーバー名:XAMPP8.2.4
・データベース:SQLite
・使用テーマ:自作中テーマ
・PHPスキル(自己評価):E

テーマのURLを取得したくて、
作成中のテーマにgetThemeUrl 関数を下記のように記述したのですが、
$this→BcBaser→getThemeUrl()
「//インストールディレクトリテーマ名/」と区切られている箇所が正しくない形式で出力されてしまいました。
※ themeUrl関数を使用して下記のように記述しても同じでした。
$this->BcBaser->themeUrl();

Basercms4では
「/インストールディレクトリ/theme/テーマ名/」
と問題なく返されたのですが、これはバグでしょうか?

こんにちは

試してみましたところ下記のように /bc_theme_sample/ という感じで正しく表示されるようでした。

インストールディレクトリやアクセスするURLはどのように設定されていますでしょうか。

こんにちは
xamppはDドライブにインストールしているため
インストールディレクトリは「D:\xampp\htdocs\basercms5」、
URLは「localhost/basercms5/」となっています。
テーマは制作ガイドを見ながら練習用のテーマ「Corp」を作成して使用しています。
それの状態でテーマのURLを取得する関数を使用すると
「//インストールディレクトリテーマ名」のように表示されます。
bc_tb1

vender/baserproject/baser-core/src/View/Helper/内の
BcBaserHelper.phpの2111行目

このファイルを直接修正していいものなのかわかりませんが、
getThemeUrl関数の動作に関するコード先頭のの
'/'の位置を書き換えたら正常に動作するようになりました。
(ついでにThemeURL関数の動作も)
元のコード

return '/' . $this->_View->getRequest()->getAttribute('base') . Inflector::underscore($this->getView()->getTheme()) . '/';

修正後のコード

return  $this->_View->getRequest()->getAttribute('base') . '/' . Inflector::underscore($this->getView()->getTheme()) . '/';

getthemeulr-1

「いいね!」 1

@ciao-h 調べたところバグではなさそうでした。
正常動作としては、base は空文字になるべきなのですが、Windows環境ではうまくいっていない可能性があります。

こちらは、CakePHP側の処理なんですが、下記コードにて、定数 DIRECTORY_SEPARATOR$base が同じ場合、$base は空文字で初期化されるべきのところ、Windowsだとうまくいかないのかもしれません。

※ 当方にWindows環境がないもので再現できず、、、

代替案としては、config/app.php'base' => false というキーがあるのですが、こちらを空文字にすると対応できそうです。

「いいね!」 1

@ryuring さん、こんにちは
自分が修正した内容を元の状態に戻し、代替案としてご提案されたconfig/app.phpのbase’ => false` というキーを空文字に変更してみたのですが、「missing route」とエラー表示され、サイト自体表示されなくなり、上手くいきませんでした・・・。

Windows(xampp)環境とBaserCMS5の相性が悪い可能性があるのですね・・・
テーマのURLを取得する関数以外の似たような関数を試したところ問題ないような気がしたのですが、なぜテーマのURLを取得する関数だけ・・・

@ciao-h ちょっと気になって、「サブフォルダに配置した環境」を作ってみましたところ、不具合が再現できました。失礼しました。。。

頂いた修正コードで正常動作ということも確認できたため、本体にも反映しました。

今回、Windows環境の問題ではありませんでした、、ご報告ありがとうございました。

ご対応いただきありがとうございます。
解決済とさせていただきます。