Jun_22
March 24, 2022, 12:39am
1
以下で紹介されている Number ヘルパーの上書きを試してみたところエラーを生じました。
Class ‘Application\Src\Utility\Service\Number’ not found
以下の要領で 3 点ほど変更すると単位がとても見やすくなりました。
https://concrete5-japan.org/community/forums/development/post-16817/
※上記 URL は「このホストへのリンクを投稿できません」と表示されるため整形済みテキストにしています
application/src/Utility/Service/Number.php を移動
application/src/Utility/Service/Number.php
↓
application/src/Concrete/Utility/Service/Number.php
1 の内容を変更
namespace Application\Src\Utility\Service;
↓
namespace Application\Concrete\Utility\Service;
application/bootstrap/app.php の内容を変更
Core::bind(‘helper/number’, function () {
return new \Application\Src\Utility\Service\Number();
});
↓
Core::bind(‘helper/number’, function () {
return new \Application\Concrete\Utility\Service\Number();
});
参考情報とあるページは現在見ることができないようです。
https://documentation.concrete5.org/developers/extending-concrete5-with-custom-code/extending-core-classes-in-the-application-directory
バージョン 9 へのアップデートでこの作業が影響を受けるかなども確認したいのですが、本件内容に関するドキュメントはどちらを参照すればよろしいでしょうか。
1 Like
@Jun_22
おお、ありがとうございます。
このドキュメント、6年前の古いものなので、新しいものを作りますね。
Jun_22
March 25, 2022, 10:07am
3
katz515 様、ありがとうございます。
バージョン 8 では
application/src/Utility/Service/Number.php
↓
application/src/Concrete/Utility/Service/Number.php
となること等を皆様はどちらで調べていらっしゃいますか。
公式などのドキュメントがないと、当方レベルではこの方法で本当に良いのか動作していても不安になってしまいます…
1 Like
@Jun_22 お手数かとは思いますが、
不安になられた時は、どうぞフォーラムに気軽に投稿してください。
他のフォーラムとかでは「まず過去記事・ドキュメントをみてください!」とかルールに書いている場合がありますが、
当、日本語フォーラムでは、「5分以上、自分で探しても見つからなかったり迷ったら、といあえず質問してみる」というスタンスで全然大丈夫です!
既知の質問だったとしても月日が経つと仕様も変わりますし、同じ状況であるとは限らないですし、いろいろ質問が Google にインデックスされると他の人も探しやすくなると思います。
参考情報とあるページは現在見ることができないようです。
https://documentation.concrete5.org/developers/extending-concrete5-with-custom-code/extending-core-classes-in-the-application-directory
こちらに移動しています。
去年7月に、concrete5 から Concrete CMS という名前に戻ったため大掛かりなURL変更などが行われているため、リンク切れなどが起こっています。
バージョン 9 へのアップデートでこの作業が影響を受けるかなども確認したいのですが、本件内容に関するドキュメントはどちらを参照すればよろしいでしょうか。
オーバーライドの方法自体のことをおっしゃっているのでしょうか?
それとも、僕のカスタマイズ部分のコードのことをおっしゃっているのでしょうか?
オーバーライドの方法は、v8 → v9 の際の変更はなかったと思います。
僕のカスタマイズ部分のコードの変更については、
このような細かいコードに関係するカスタマイズについて正直言って、GitHub でコアのコードを見比べ、差分があるかを確認し、開発環境でテストをするしか無いと思っています。
今回の場合は、こちらですね。
public function formatSize($size, $forceUnit = '')
{
if (!is_numeric($size)) {
return $size;
}
if (strlen($forceUnit) && array_search($forceUnit, ['bytes', 'KB', 'MB', 'GB', 'TB']) === false) {
$forceUnit = '';
}
if ($forceUnit === 'bytes' || (abs($size) < 1024 && (!strlen($forceUnit)))) {
return t2(/*i18n %s is a number */'%s byte', '%s bytes', $size, $this->format($size, 0));
}
$size /= 1024;
if ($forceUnit === 'KB' || (abs($size) < 1024 && (!strlen($forceUnit)))) {
return t(/*i18n %s is a number, KB means Kilobyte */'%s KB', $this->format($size, 2));
}
$size /= 1024;
if ($forceUnit === 'MB' || (abs($size) < 1024 && (!strlen($forceUnit)))) {
return t(/*i18n %s is a number, MB means Megabyte */'%s MB', $this->format($size, 2));
}
$size /= 1024;
This file has been truncated. show original
みてみると、コードに変わりはないと思うので、オーバーライド部分はそのまま流用できそうです。ただすいませんが、開発環境などで事前にテストしていただけると幸いです。
よろしくお願いします。
補足です。
こちら、僕の場合は、
まず、コンクリのアップデートを開発テスト環境で行い、
カスタマイズをしたところを中心に表示テストを行います。
エラー表示を確認したら、
そのエラーなどをベースに、
ドキュメント → フォーラム → GitHub のコード
などと探していきます。
GitHub の変更や、新しいバージョンのリリースノートをみて変更が必要そうかの当たりがある場合もあります。
とにかく、開発環境でアップデートを試されてエラーが見つかり、5分ぐらい探しても回答が見つからなければ、フォーラムで質問されつつ、回答をお待ちの間に追加で調べてみるなどされてもいいのかなと思います。
よろしくお願いします。
@Jun_22
concrete5-japan.org へのリンクがなぜか、スパム判定されてしまっていました💦
訂正いたしました。
Jun_22
March 28, 2022, 9:20am
7
ご案内いただきました Extending Core Classes in the Application Directory で手順を確認できました。
手元の PHP 7.4.x 環境の Concrete CMS 9.0.2 でも動作しているようです。
こうしたティップスを公開してくださる皆様に改めて感謝したします。
追加の場合 application/src の下に Concrete ディレクトリは作成しないのですね。
当方などは間違えてしまいそうです…
https://documentation.concretecms.org/developers/framework/extending-concrete5-with-custom-code/creating-custom-code-in-the-application-directory
公式のドキュメントは URL が変更されている旨承知しました。
辿り着けなかった場合はお言葉に甘えまた質問させていただきます。
ご丁寧な回答をありがとうございました。