Aș dori să obțin lista metodelor de expediere aplicabile pentru coșul actual, dar depind de profilul de expediere selectat. Programez un controler personalizat care ar trebui să returneze lista metodelor și tarifelor de expediere disponibile, dar, evident, să aibă un coș și profilul de expediere al unui client.
Are modul de expediere comercială vreun serviciu sau clasă pe care l-aș putea folosi pentru a obține aceste informații? Poate, există vreo altă modalitate de a-l obține?
Am citit codul sursă din:
Commerce_Shipping\src\Plugin\Commerce\CheckoutPane\ShippingInformation.php
Acesta este pluginul CheckoutPane care redă opțiunile de expediere în pagina de finalizare a achiziției. buildPaneForm
metoda redă acest formular, iar acele linii de cod ar trebui să-mi ofere lista metodelor de expediere:
funcția publică buildPaneForm(array $pane_form, FormStateInterface $form_state, array &$complete_form) {
...
$shipments = $this->order->get('shipments')->referencedEntities();
...
foreach ($shipments ca $index => $shipment) {
... // toate transporturile
}
Dar l-am încercat în controlerul meu personalizat și returnează întotdeauna o matrice goală. Cred că ar trebui să existe un proces anterior care să populeze această listă, dar nu o găsesc. Am încercat să aplic o tranziție de stare, dar nu funcționează.