Ajax Request erkennen und anderes Template zuweisen

Hallo.

Ich arbeite mich gerade in die Shopware und stehe manchmal etwas auf dem Schlauch.

Ich möchte mit einem Plugin ermöglichen, dass der Content eines Herstellers auch per Ajax geladen werden kann. Dann aber ohne Header und Footer.

Daraus ergeben sich mehrere Fragen.

  1. Wie kann ich in meinem Event einen Ajax Request erkennen?

  2. Wie weise ich der bestehenden Action “manufacturerAction” aus dem Controller “Listing” ein neues Template zu? Oder übergebe ich am besten eine Variable $isAjax an das bestehede Template und checke dort per {if $isAjax} den Request?

  3. Kann es sein, dass ich die einen CSRF Token mitsenden muss?

Bisher sieht die Bootsrap so aus:

 

_________________________

<?php
class Shopware\_Plugins\_Frontend\_DMOManufacturers\_Bootstrap     extends Shopware\_Components\_Plugin\_Bootstrap                  public function getLabel()     {         return 'Listing Manufacturers';     }     public function install()     {                      $this-\>subscribeEvent(             'Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend',             'onListingManufacturer'         );         return true;              }          public function onListingManufacturer(Enlight\_Event\_EventArgs $args)     {         $controller = $args-\>get('subject');         $view = $controller-\>View();                                  $view-\>addTemplateDir(             \_\_DIR\_\_ . '/Views'         );          $actionName = $args-\>getSubject()-\>Request()-\>getActionName();              if($actionName == 'manufacturer') {                 //Hier das Template zuweisen???                 $isAjax = "Wie kann ich das checken?"         $view-\>assign('isAjax',$isAjax);     }       } }   \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ (Als Codeschnipsel wird es nicht richtig dargestellt)   Gruß ellwe

Gelöst:

 

    public function install()
    {
	   	 
	     $this->subscribeEvent(
	        'Enlight_Controller_Action_Frontend_Listing_manufacturer',
	        'onListingManufacturer'
	    );

	    return true;
	    
    }
    
    public function onListingManufacturer(Enlight_Event_EventArgs $args)
    {

		if(
			$args->getSubject()->Request()->getActionName() == 'manufacturer' &&
			$args->getSubject()->Request()->isXmlHttpRequest()
			) 
			{
			 $controller = $args->get('subject');
			 $view = $controller->View();	
				
			$view->addTemplateDir(
            	            $this->Path() . 'Views/'
			);
			
			$view->loadTemplate('frontend/listing/ajax_manufacturer.tpl');
		}

      }