bbkids
bbkids
PHP8 Warning 回避 ([b366a0f](https://github.com/EC-CUBE/ec-cube2/pull/836/commits/b366a0fd706f725f2fb3fbbf16e1ecc0dc2a41c5)) の修正を入れましたところ、 数量欄に「あ」を入力し、[計算結果の確認]ボタンを押すと 当方の環境では、システムエラーが出るようになりました。一応お知らせ致します。 [/manager/order/edit.php] Fatal error(E_ERROR): Uncaught TypeError: Unsupported operand types: int + string in data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php:1212
すみません、今試してみましたところ、 当初の私の検証ミスの様でして、 PHP8 Warning 回避 ([b366a0f](https://github.com/EC-CUBE/ec-cube2/pull/836/commits/b366a0fd706f725f2fb3fbbf16e1ecc0dc2a41c5)) の修正以前でも、 数量欄のみ改善させていない様で御座います。 具体的には、 数量欄に「あ」を入力し、[計算結果の確認]ボタンを押すと 当方の環境では、システムエラーで落ちます。 その場合のエラーログは、 [/admin/order/edit.php] Fatal error(E_ERROR): Uncaught TypeError: Unsupported operand types: string * string in data/class/util/SC_Utils.php:895
> 数量欄のみ改善させていない すみません、「数量欄のみ改善されていない」の間違いでした。 別途 issues でOKです。
この修正以降、 商品追加で一度 規格1と規格2がある商品を追加し、その追加した商品を規格がない商品に変更をすると public function changeShipmentProducts(); の中の以下の箇所で、エラー落ちします。 ``` $arrShipmentProducts['shipment_classcategory_name1'][$shipping_id][$no] = $arrProductInfo['classcategory_name1']; $arrShipmentProducts['shipment_classcategory_name2'][$shipping_id][$no] = $arrProductInfo['classcategory_name2']; ``` Fatal error(E_ERROR): Cannot assign an empty string to a string offset が出ます。 また、その逆で、規格がない商品を一度追加して、その追加した商品を規格1と規格2がある商品に変更すると 同じ個所で、 Warning(E_WARNING):...
$arrShipmentProducts[]を辿ってみましたところ、 入れ子の配列のについて初期化されていなかったようで、NULLがセットされエラー落ちしていたものと考えられます。 ``` $arrShipmentProducts['shipment_classcategory_name1'][$shipping_id] = []; $arrShipmentProducts['shipment_classcategory_name2'][$shipping_id] = []; ``` changeShipmentProducts()の中で値をセットする直前に、配列として初期化したところエラー落ち解消されました。 LC_Page_Admin_Order_Edit全体を把握できていないので、ここでの初期化が適切かどうかは何とも言えません。 【追記】 その後、 https://github.com/seasoftjapan/eccube-2_13/tree/seasoft-829-2 に上記をマージしたものを一通り試して見ましたが、エラー落ちはなくなりました。 Warninngは少々残ります(かなり減りました)が、当方が試した限りは、おおむね良さそうな感じで御座います。
あまり私自身どの様な仕様にすべきか言う事に知見がなくご意見するのは、恐縮なのですが、確かにテンプレート側で数字だけを受け付けるように修正するのが手っ取り早そうですね。 管理者側画面ですし、JavaScript回避して数字以外を入力する事もないでしょうから。
テンプレート側でINPUTタグのTYPE属 number が何よりも一番手っ取り早いですね。 ただこれだと空白が入力出来てしまうので、その場合はFatal errorで落ちますね。 テンプレートから sfCalcIncTax 呼び出すところで条件分岐し `` 何かしらのエラーがある場合は sfCalcIncTax を呼ばないようにするか そもそも JavaScriptで数字以外は入力させない&数字以外の文字を入力された場合にはそれを削除ですかね。
早速修正案ご作成有難う御座います。 master...seasoftjapan:eccube-2_13:seasoft-829 試しましたとろこ、良い感じで御座います。当方で確認されておりました不具合は解消致しました。 PHP 側で計算してテンプレート変数に渡す方法での修正は、やはり気持ちいいですね。
すみません、1点気になることが。 Warningなので気にしていてはキリが無いのですが、商品追加や変更の度に以下のWarningが出ます。 function calcPriceInctax(&$objFormParam)が使われる度に出るので出来れば解消したいのですが、どうでしょうか? [/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
早々にご確認有難う御座います。 キーを被らいよう試してみましたとろこ、問題のWarningは出なくなりました。 Pushされましたら、あらためて確認したいと思います。