EC-CUBE3 「NoSuchPropertyException~」エラーでツボった

EC-CUBE3で入力フォームに項目を追加して、管理画面から入力フォームにアクセスをしたときにツボったエラーです。
同じ人がいるかもしれないので参考にしてください。

NoSuchPropertyException in PropertyAccessor.php line 486:
Neither the property “

のエラーに関しての話です。

 

 

エラーメッセージ

NoSuchPropertyException in PropertyAccessor.php line 486:
Neither the property “message_cur” nor one of the methods “getMessageCur()”, “messageCur()”, “isMessageCur()”, “hasMessageCur()”, “__get()” exist and have public access in class “Eccube\Entity\Order”.

 

 

エラーの画面

こちらは/index_dev.php/を使用したエラー画面です。
エラー画面の出力の仕方はコチラの

「EC-CUBE3 エラーの場所がわかりにくいので解りやすくデバッグモードにする方法」

を参考にしてください。

 

速攻解決策

「message_cur」という名前のフォームを追加したので、
src/Eccube/Entity/内の関数名も
public function setMessage_cur($message_cur)

public function getMessage_cur()
にしていました。

この関数はそのままにしておいて
同じ内容の関数で_を外した関数を追加したら直りました。

public function setMessagecur($message_cur)

public function getMessagecur()

 

こんな感じです

 

詳細

何をしようとしたのか

注文画面で「message_cur」という項目をつけようとしました。
なので、既存の「message」に関する記述をコピペして、「message」を「message_cur」と変えてソースを追加しました。

その時、関数名も同じようにsetMessage()のコピペをsetMessage_cur()としてしまった感じです。

詳しくはコチラの内容を行った状況です
EC-CUBE3 注文画面に項目を追加する

注文に関する部分なので、該当ソースの場所は
/src/Eccube/Entity/Order.php
です。

 

なぜ2つの関数を用意したのか

【public function setMessage_cur(】
のほうは、お客様が注文をしたときに呼び出されていました。

【public function setMessagecur(】
のほうは管理画面からの操作で呼び出されていました。

細かく王時間もないので、2つの関数を用意して対応という感じです。

 

結局のところ、納期の問題もありSmartyとか勉強する余裕がないので
詳しいことはわかりませんが、
勉強するならフォーラムの中の

mapped オプションとは?

が、とても有効な内容になっている感じですので、参考にしてみて下さい。

 

 

 

 

 

 

 

 

 

 

コメントを残す