kanuma
11. April 2018 um 18:50
1
Moin,
Ich möchte den Checkout um eine Selectbox erweietrn. Ich habe über den Crud-Service bereits in den s_order_attributes die Spalte " paul_order_survey " angelegt. Nun soll beim Abschließen der Bestellung der Wert dorthin übertragen werden, wie macht man das am sinnvollsten?
Hier das GitHub-Repo: GitHub - marcmanusch/PaulCheckoutSurvey
Danke für die Hilfe !
Bei uns im Shop wird es in etwas so gemacht:
class Checkout implements \Enlight\Event\SubscriberInterface
{
/**
* @var DIContainer
*/
private $container;
/**
* @param Container $container
*/
public function __construct(DIContainer $container)
{
$this->container = $container;
}
/**
* Get the subscribed events.
*/
public static function getSubscribedEvents()
{
return [
'Enlight_Controller_Action_PreDispatch_Frontend_Checkout' => 'preDispatchCheckout',
'Shopware_Modules_Order_SaveOrder_FilterParams' => 'saveOrderFilterParams'
];
}
/**
*
* @param \Enlight_Event_EventArgs $args
*
* @Enlight\Event Enlight_Controller_Action_PreDispatch_Frontend_Checkout
*/
public function preDispatchCheckout(\Enlight_Event_EventArgs $args)
{
$request = $args->getSubject()->Request();
// Check for payment action
if (null !== $request->getParam('exhibition_visited', null))
{
$exhibition_visited = $request->getParam('exhibition_visited', 0);
switch ($exhibition_visited)
{
case 1:
case '1':
$exhibition_visited = 1;
break;
case 2:
case '2':
$exhibition_visited = 2;
break;
default:
$exhibition_visited = 0;
}
$session = $this->container->get('session');
$session->exhibition_visited = $exhibition_visited;
}
}
/**
*
* @param \Enlight_Event_EventArgs $args
*
* @Enlight\Event Shopware_Modules_Order_SaveOrder_FilterParams
*/
public function saveOrderFilterParams(\Enlight_Event_EventArgs $args)
{
$session = $this->container->get('session');
$order = $args->getSubject();
if (null !== $session->get('exhibition_visited'))
{
$order->orderAttributes['ms_exhibition_visited'] = $session->get('exhibition_visited', 0);
}
}
}
1 „Gefällt mir“
kanuma
12. April 2018 um 07:18
3
Kannst du mir den kompletten Code bereitstellen? Das wäre ein Traum!
hab nämlich irgend wie ein Hänger… komme nicht drauf, wie der Wert aus dem Frontend in die Session kommt.
vielen Dank
Das passiert in der Methode preDispatchCheckout(). Das ist auch der ganze Code. Mehr gibt es da nicht
kanuma
12. April 2018 um 12:00
5
Ok… dann stehe ich immer noch auf dem Schlauch …
mit $request->getParam('exhibition_visited… wird ja auf dem Frontend die Variable geholt.
Wie sieht die Stelle im Frontend aus ? Ich muss ja die Nutzereingabe irgendwie auslesen …
danke für deine Hilfe
kanuma
12. April 2018 um 14:41
6
Oder einfach im Template wie mit dem sComment? Über data-storageKeyName einen Namen definieren und über getParam holen?
{* Additional customer comment for the order *}
{block name='frontend_checkout_confirm_comment'}
{$sComment|escape}
{/block}
kanuma
13. April 2018 um 09:51
7
Anders gefragt: Wie bekomme ich die Nutzereingabe aus dem Frontend (Selectbox) in eine Variable im Controller.
Der Rest funktioniert super. Über data-storageKeyName=„meineVariable“ bin ich nicht weiter gekommen, es landet immer noch im sComment (wieso auch immer).
@arnebecker [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“)
Wäre super, wenn mir jemand einen Tipp geben könnte
Ach sorry. Das wird mit dem Formular im Checkout mit angeschickt:
{extends file='parent:frontend/checkout/confirm.tpl'}
{block name='frontend_checkout_confirm_tos_panel' append}
{s name='ConfirmExhibitionVisitNo'}Nein{/s}
{s name='ConfirmExhibitionVisitYes'}Ja{/s}
{/block}
1 „Gefällt mir“
kanuma
13. April 2018 um 11:10
9
@arnebecker schrieb:
Ach sorry. Das wird mit dem Formular im Checkout mit angeschickt:
Genau da ist das problem, eben nicht… auch nicht mit deinem Code, da der Block „frontend_checkout_confirm_tos_panel“ nicht existiert. Wenn ich mich an den Block „frontend_checkout_confirm_additional_features“ hänge klappt es auch nicht
EDIT: Über den Block „frontend_checkout_confirm_information_wrapper“ klapt es! Vielen Dank!
Plugin ist hier verfügbar: GitHub - marcmanusch/PaulCheckoutSurvey
1 „Gefällt mir“
kanuma
29. April 2018 um 07:04
10
@arnebecker , [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)
ich muss mich leider nochmal melden…wir haben das Plugin nun einige Zeit im Einsatz, jedoch werden bei sehr vielen Bestellungen keine Werte gespeichert. Aus meiner Beobachtung heraus sind das PayPal Express Käufer. An welcher Stelle kann der Wert verloren gehen ?!
Mit freundlichen Grüßen
marc
Danke für das Plugin und die Hilfe! Läuft es heute immer noch bei dir mit der 5.6?
Grüße Gregor
kanuma
9. Februar 2020 um 13:06
12
Ja, ist noch genau so im Einsatz