-
Notifications
You must be signed in to change notification settings - Fork 98
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
PHP8 対応漏れ?「受注管理>受注登録」画面でシステムエラー #829
Comments
例えばテンプレートの修正するのはどうでしょう |
あまり私自身どの様な仕様にすべきか言う事に知見がなくご意見するのは、恐縮なのですが、確かにテンプレート側で数字だけを受け付けるように修正するのが手っ取り早そうですね。 |
テンプレート側でINPUTタグのTYPE属 number が何よりも一番手っ取り早いですね。 テンプレートから sfCalcIncTax 呼び出すところで条件分岐し そもそも |
従来と同じ動作をするように、キャストしてしまう方法もありますが、PHP の改善を無駄にしてしまうのも気が引けて悩ましいですね… 税込単価を PHP 側で計算して、テンプレート変数に渡す方向での回避を試みてます。
|
お試しいただけますと幸いです。 |
早速修正案ご作成有難う御座います。 PHP 側で計算してテンプレート変数に渡す方法での修正は、やはり気持ちいいですね。 |
すみません、1点気になることが。 [/manager/order/edit.php] Warning(E_WARNING): Only the first byte will be assigned to the string offset on [data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php(1332)] from ::1 |
@bbkids 不具合報告ありがとうございます。 手元環境を別件使用中で検証できないのですが、キーが被ってしまったようです。
追って修正を Push します。 |
早々にご確認有難う御座います。 |
修正試して見ました。 |
他に、SC_FormParam で適切な初期値を設定していなくてコケるパターンがあるようなので、修正予定です。 【追記】 明細データは SC_FormParam のインスタンスを分けた方が良い気もしますが、とりあえず現状で目先のエラーが無くなれば、別 Issue かなと考えています。 |
setProductsQuantity() 内のエラーを回避するため、lfCheckError() の事前呼び出しを徹底した。
- 新規登録時に point (受注前ポイント) が空文字のため、生じるエラーを回避した。SC_FormParam を初期化。 - 上記の他にも SC_FormParam の初期化が不適当と思われる箇所を調整した。
- 演算子の空文字の扱いが厄介なので null とする。 - SC_FormParam::getValue() が多次元配列の1次要素の一部を空文字で返してエラーとなるのを回避した。 - SC_FormParam::getValue() で定義されていないキーを指定した場合に例外を補足する。暗黙的に空文字を返して、後続の処理でエラーとなるのを防ぐ意図。
- 演算子の空文字の扱いが厄介なので null とする。 - SC_FormParam の order_id が配列となり、Smarty h 修飾子がエラーとなるのを回避した。 - shipment_classcategory_name1, shipment_classcategory_name2 の処理が抜けていた箇所を補った。
開発コミュニティ参照
error.log
[/manager/order/edit.php] Fatal error(E_ERROR): Uncaught TypeError: Unsupported operand types: float + string in data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php:707
既存の受注情報を編集で、商品の単価を数字以外(例えば あ )を入力し、計算結果の確認ボタンを押すとシステムエラーで落ちます。(数量、税率、値引き、送料、手数料、使用ポイントも同様です。)
数字+文字ではWarninngこそ出ますが落ちません。また、PHP7.4では発生せず。
試しに、LC_Page_Admin_Order_Edit.php の lfCheckError() で
入力値(単価、数量、税率、値引き、送料、手数料、使用ポイント)のチェックでエラーが無い場合のみ現行の処理、
エラーがある場合は、計算に必要な数字を0として処理するよう処理として試してみましたが、
テンプレートedit.tpl:432 側で呼び出される
<!--{$price|sfCalcIncTax:$tax_rate:$tax_rule|n2s}--> 円<br />
においても、Fatal error が発生します。
error.log
[/manager/order/edit.php] Fatal error(E_ERROR): Uncaught TypeError: Unsupported operand types: string * float in data/class/util\SC_Utils.php:711
となります。
The text was updated successfully, but these errors were encountered: