メインコンテンツまでスキップ

ExmentのMariaDBの保存時の不具合修正方法

内容

Exmentの選択列で複数選択、自由入力に対する不具合の修正方法

Exmentでフリーワード検索をしても値が検索にでない場合などはこの不具合に該当する場合がります。

注意

この修正は動作に影響があるか未検証の為、自己責任で実施してください。

必ずバックアップファイルを作成して実施してください。

修正方法

修正対象ファイル: exment/vendor/exceedone/exment/src/Model/CustomValue.php

修正内容: CustomValue.php ファイルに以下のメソッドを追加します。(最終行でいいです)

    /**
* Set the value attribute.
*
* @param array $value
* @return void
*/
public function setValueAttribute($value)
{
$this->attributes['value'] = json_encode($value, JSON_UNESCAPED_UNICODE);
}

この修正の理由:

  • これはCustomValue モデルの value プロパティに値がセットされる際に自動的に呼び出されます。
  • json_encode($value, JSON_UNESCAPED_UNICODE) とすることで、データベースに保存される前に日本語がUnicodeエスケープされずにJSON文字列に変換されます。

注意点:

  • Composerのアップデート時に上書きされる可能性があります。(現状、アップデートの度に修正が必要かも)

  • 修正後は、Exmentの動作に影響がないか十分にテストしてください。(テストする時間がないので誰かお願いします。)