fix #4324 【サブサイト】「エイリアスを利用してメインサイトと自動連携する 」にチェックを入れると、メインサイトの設定が変更できない問題を修正#4352
fix #4324 【サブサイト】「エイリアスを利用してメインサイトと自動連携する 」にチェックを入れると、メインサイトの設定が変更できない問題を修正#4352ryuring merged 1 commit intobaserproject:5.2.xfrom
Conversation
There was a problem hiding this comment.
Pull request overview
本PRは、サブサイトで「エイリアスを利用してメインサイトと自動連携する」を有効にしている場合に、メインサイト側のルートコンテンツ更新がサブサイト側のルート情報(URL名など)を崩してしまい、設定変更に支障が出る問題(#4324)を修正するものです。
Changes:
ContentsTable::updateRelateSubSiteContent()で、メインサイトのsite_root更新時に連携先サブサイトのルートコンテンツ名をサイト側の alias/name に合わせて維持するよう変更- 同ケースで、連携先サブサイトのルートコンテンツの
parent_idをメインサイトのルートに固定し、不正なツリー更新を回避 - 上記挙動を検証するユニットテストを追加
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| plugins/baser-core/src/Model/Table/ContentsTable.php | メインサイトのルート更新時に、連携サブサイト側のルートコンテンツの name/parent_id を適切に扱うロジックへ修正 |
| plugins/baser-core/tests/TestCase/Model/Table/ContentsTableTest.php | メインサイトの site_root 更新で連携先サブサイトのURL名が維持されることを確認するテストを追加 |
| } else { | ||
| $sitesTable->updateAll(['status' => true], ['id' => 2]); | ||
| } |
There was a problem hiding this comment.
このテストは Sites テーブルの状態に依存しており、id=2 のレコードが既に存在する場合に relate_main_site や alias が期待値(例: smartphoneサイトの設定)になっている保証がありません。SitesScenario::class を load する、または id=2 の Site エンティティを取得して relate_main_site=true / alias='s' を含めて明示的に更新してから検証する形にすると、テストが環境依存になりにくいです。
| } else { | |
| $sitesTable->updateAll(['status' => true], ['id' => 2]); | |
| } | |
| } | |
| $sitesTable->updateAll([ | |
| 'status' => true, | |
| 'relate_main_site' => true, | |
| 'alias' => 's', | |
| ], ['id' => 2]); |
| $this->Contents->updateAll(['name' => 's'], ['id' => 23]); | ||
|
|
There was a problem hiding this comment.
テスト内で id=23 を直接参照していますが、これは「site_id=2 のルートコンテンツID」である前提に強く依存します。$sitesTable->getRootContentId(2) で取得したIDを使うと、フィクスチャ/シナリオ変更時にも意図が明確で壊れにくくなります。
|
@kaburk コンフリクトしちゃってますので、調整をお願いしていいですか? |
…サイトの設定が変更できない問題を修正
よろしくお願いします!