2
Magento 2-カスタムフィールドをチェックアウトに追加して送信する方法
すべてのチュートリアルはフィールドの追加のみを扱っていますが、このフィールドの値の保存はスキップされます#mindblown。理由はわかりませんが、フィールドやフォームを追加する最も重要な部分です。 Magentoのドキュメントをフォローしようとしましたが...... テストの目的で、別のフィールドを配送先住所に追加して、カスタムスコープ、カスタムデータセット、カスタムデータプロバイダー、その他のドキュメント化されていないものを無視します。 そのフォームが「静的」または「動的」であることの意味がわかりません。私にとって、すべてのチェックアウトフォームはKnockoutJSテンプレートの上に動的に構築されますが、...「静的」な方法を試してみると、ここに入力を追加できます(静的フォームかどうか)。 最初に、Knockoutオブザーバブルがデータの解析および送信中に自分のフィールドを無視する理由をデバッグしようとします。フィールドに空のnameパラメーターがあることがわかりましたが、この問題を修正する方法を管理できません。IMOは、などのinputName他のオプションと同じようにdisabled、パラメーターを介してUIコンポーネントレンダラーに渡される必要がありますplaceholder(他のパラメーターは正常に機能し、XMLから生成された構成をチェックしてモジュールの初期化をチェックし、見栄えがよくなります) 第二に、プラグインを作成しLayoutProcessor、まったく同じデータを渡す「動的」な方法を使用しようとしました...そして、names を持つフィールドがありますが、送信はまだまったく機能しません。 JSを掘り下げた後、このリクエストの準備はmodule-checkout/view/frontend/web/js/model/shipping-save-processor/default.jsファイルで維持されていることがわかりました。これはmodule-checkout/view/frontend/web/js/model/quote.js、Knockoutオブザーバブルが定義/作成される場所によって異なります。 どういうわけか、module-checkout/view/frontend/web/js/model/address-converter.jsこのオブザーバブルを更新しmodule-checkout/view/frontend/web/js/model/new-customer-address.js、に依存して、最終的にいくつかの興味深い構成オプションを見つけました-すべてのアドレスフィールドのリスト ここにフィールドを追加すると、スクリプトが解析と送信を開始し、OFC 500を取得します、b / cバックエンドはそれらを認識しません...(質問しないでください、私はバックエンド開発者ではありません) だからここに私の質問が来ます: このタイプのカスタマイズを処理する正しい方法ですか?(b / cは私にとって奇妙に見える) 新しいアドレスに関連しないフィールドの値を送信する方法は?同様の構成はどこにも見られませんでした。私の場合、注文のコメント(textarea)と請求書のリクエスト(checkbox)を送りたいです。両方をアドレスとして保存しないでください。一部のユーザーは、将来の使用のためにこのアドレスを保存したい場合があります。 「静的」および「動的」フォームまたはいくつかの例/比較に関するドキュメントはありますか?このように考える価値はありますか? 追加の実存的な質問: なぜこれがそれほど一貫していないのですか?MagentoがXML / PHPファイルで大量のパラメーターを定義する必要があるのに、Magentoは入力のみをレンダリングできるのに、すべてを自分で処理する必要があるのはなぜですか?