Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

固定ページ オプション欄のアイキャッチが保存されない #2927

Closed
kaburk opened this issue Dec 7, 2023 · 5 comments
Closed
Assignees
Labels
Bug バグ Reviewed レビュー済

Comments

@kaburk
Copy link
Collaborator

kaburk commented Dec 7, 2023

概要

固定ページ オプション欄のアイキャッチが保存されないようです。
環境依存かとも思いましたので、Docker、MAMPそれぞれで試してみましたが保存されていないようでした。

スクリーンショット 2023-12-07 20 29 16 スクリーンショット 2023-12-07 20 29 28 スクリーンショット 2023-12-07 20 29 35 スクリーンショット 2023-12-07 20 29 44

ファイルとDB両方空のようです。

スクリーンショット 2023-12-07 20 32 41 スクリーンショット 2023-12-07 20 31 07

エラーログなどログが出なくてちょっと保存されない理由が不明でした。

スクリーンショット 2023-12-07 20 35 48

ただ、ブログ設定のアイキャッチなども同様だったのでcontentsテーブルの保存処理あたりが怪しそうです。

baserCMS version : 5.0.7

@kaburk kaburk added the Bug バグ label Dec 7, 2023
@ryuring ryuring closed this as completed in 10224c0 Dec 7, 2023
@ryuring ryuring reopened this Dec 7, 2023
@ryuring
Copy link
Collaborator

ryuring commented Dec 7, 2023

@kaburk 問題自体は解決しましたが、仕様的な課題が残っているためオープンします。

@seto1 こちらの件ですが、以前、BcFileUploader に、_bc_upload_id をエンティティに組込処理があったと思いますが、その際、エンティティの $_accessible プロパティに、* または、_bc_upload_id を明示していないと、配列をエンティティ化する際に、消えてしまうようです。

仕様的にわかりにくいので、他にいい方法ないですかね??

@ryuring ryuring added the Reviewed レビュー済 label Dec 7, 2023
@ryuring ryuring self-assigned this Dec 7, 2023
@seto1
Copy link
Collaborator

seto1 commented Dec 8, 2023

@ryuring なるほど... ブログ記事のアイキャッチしか動作確認できてませんでした。

未検証ですがぱっと思いついたのは以下です。
Bが実現性が高そうです。

  • A. BcUploadBehaviorからエンティティの_accessibleに動的に_bc_upload_idを追加する
    • エンティティに変更を加える方法が問題
      • beforeMarshalから$event->getSubject()->getEntityClass()やsetEntityClass?
  • B. BcUploadBehaviorのbeforeMarshalからafterMarshalに一時変数使って_bc_upload_idを渡す
  • C. リクエストデータやエンティティに_bc_upload_idをもたせるのをやめる
    • その場合はキーにする値が問題
      • 更新時はidを使えるが作成時はidが存在しない

@ryuring
Copy link
Collaborator

ryuring commented Dec 8, 2023

@seto1 悩ましいですね

  • A:_accessible へ外部から介入するのが気持ち悪い
  • B:バグ生みそう
  • C:そもそもの問題

実行時というより実装時の問題なので、実装時に、_bc_upload_id にアクセスできるようになってなかったら例外投げるってのはどうでしょう?

「BcUploderBehahavior を利用するには、ファイル保存対象のエンティティについて、_bc_upload_id フィールドをアクセスできるようにしてください。」など

@seto1
Copy link
Collaborator

seto1 commented Dec 8, 2023

@ryuring あまりルールは増やしたくないですね...

BcUploadBehavior->beforeMarshal に以下の変更を加えると対応できそうなのですがいかがでしょう。

  • 引数追加
    • ArrayObject $options
  • 一行追加
    • $options['accessibleFields']['_bc_upload_id'] = true;

@ryuring
Copy link
Collaborator

ryuring commented Dec 8, 2023

@seto1 おー、マジっすか、それでいけるなら一番良さそうですね。お手隙でいいのでお願いしていいですか

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug バグ Reviewed レビュー済
Projects
None yet
Development

No branches or pull requests

3 participants