非会員情報入力画面のフリガナを、必須入力から任意入力に変更するカスタマイズをしたEC-CUBE(3系)で、フリガナを空欄にして注文内容確認画面へ進むと、下記のコードで非会員情報を取得することができない事象が発生した。

$Customer = $app['eccube.service.shopping']->getNonMember('eccube.front.shopping.nonmember');

フリガナを入力した上で確認画面へ進むと正常に取得できるのだが、空欄の場合$CustomerにはNullが入ってしまう。

この問題を解決するには、Customerエンティティのフリガナに空文字をセットすれば良い。

以下のファイルを開き、setKana01、setKana02メソッドをそれぞれ次のように編集する。

src/Eccube/Entity/Customer.php

public function setKana01($kana01) 
{ 
+ $kana01 = $kana01 ? $kana01 : ' '; 
  $this->kana01 = $kana01; 
  return $this; 
}
public function setKana02($kana02) 
{ 
+ $kana02 = $kana02 ? $kana02 : ' '; 
  $this->kana02 = $kana02; 
  return $this; 
}

渡された引数が空の場合に、空文字を代入することで今回の問題を解消することができる。