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とか勉強する余裕がないので
詳しいことはわかりませんが、
勉強するならフォーラムの中の
が、とても有効な内容になっている感じですので、参考にしてみて下さい。
コメント