turk porno porno escort rokettube
Ergebnis 1 bis 4 von 4

Thema: Ajax + onBoostrap + Listener

  1. #1
    Benutzer
    Registriert seit
    14.06.2012
    Beiträge
    32
    Thanks
    1
    Thanked 9 Times in 3 Posts

    Standard Ajax + onBoostrap + Listener

    Hallo liebe ZF2 Entwickler,

    ich bin jetzt auf ein Problem gestoßen, dessen Lösung ich hier suche ;-)

    In der onBoostrap Methode von diversen Modulen hänge ich Listener Aggregate an den EventManager an.

    Wenn ich jetzt auf einer Seite Ajax Elemente mit einbinde, die z.B. auf das jQuery Event document ready lauschen, wird logischer Weise der gesamte ZF2 Stack erneut geladen. Und es wird demzufolge auch wieder die onBoostrap Methode aufgerufen.

    Wenn ich nun aber das Formular speichere, dann wird die Entität aus dem Listener doppelt in die Datenbank eingetragen, da _irgendwie_ der Listener doppelt registriert wurde. Verstehe ich nicht so ganz. Das müssten doch eigentlich zwei verschiedene PHP Prozesse sein, oder nicht?

    Meine onBootstrap sieht eigentlich recht harmlos aus:

    PHP-Code:
    public function onBootstrap(EventInterface $e){
        
    $application  $e->getTarget();
        
    /* @var $eventManager \Zend\EventManager\EventManager */
        
    $eventManager $application->getEventManager();
        
    $services     $application->getServiceManager();
        
    file_put_contents('test.txt'"Attach in onBootstrap " get_class($e->getTarget()) . PHP_EOLFILE_APPEND);
        
    $eventManager->attachAggregate($services->get('ListenerName));

    Oder mache ich da schon was falsch?

  2. The Following 3 Users Say Thank You to dennis! For This Useful Post:

    acanadaparkas (20.05.2014), naracinapabl (22.05.2014), suggmenstiffany (23.05.2014)

  3. #2
    Benutzer
    Registriert seit
    15.06.2012
    Beiträge
    32
    Thanks
    1
    Thanked 9 Times in 3 Posts

    Standard

    Gnahhh... das größte Problem sitzt immer VOR dem Monitor... -> Icke


    Problem war/ist folgendes:

    Ich nutzte Doctrine und habe (mindestens) eine Entität, die vererbbar (in dem Fall auch abstract) ist. Nun benötigt Doctrine dafür eine DiscriminatorMap, die *eigentlich* in die Basis-Klasse gehört. Da das ganze alles andere als flexibel ist, habe ich in einem früheren Projekt bereits eine dynamische DiscriminatorMap erzeugen lassen. So, das Problem hier ist, wann und wie ich diese Map erzeugen lasse. Ich habe mir gedacht, dass ich das am Besten auf das Event bootstrap mache.

    Das hatte bei mir aber nur funktioniert, wenn ich das in die application.config.php unter "listeners" eingetragen habe. Ich weiß nicht, wie ich diese Aktion sonst quasi als aller erstes ausführen lassen kann. Ideen dazu?

    Achja, das hat jetzt hier mit Javascript nicht mehr ganz so viel zu tun.

  4. The Following 3 Users Say Thank You to dennis! For This Useful Post:

    acanadaparkas (20.05.2014), naracinapabl (22.05.2014), suggmenstiffany (23.05.2014)

  5. #3
    Erfahrener Benutzer Avatar von [-UFO-]Melkor
    Registriert seit
    06.01.2009
    Beiträge
    327
    Thanks
    0
    Thanked 34 Times in 31 Posts

    Standard

    Du kannst einem Listener doch eine Priorität mitgeben. Das sollte doch eigentlich reichen, um den Listener in der onBootstrap-Methode registrieren zu können, oder?
    Blog über PHP und das ZF2

  6. The Following 3 Users Say Thank You to [-UFO-]Melkor For This Useful Post:

    acanadaparkas (20.05.2014), naracinapabl (22.05.2014), suggmenstiffany (23.05.2014)

  7. #4
    Benutzer
    Registriert seit
    15.06.2012
    Beiträge
    32
    Thanks
    1
    Thanked 9 Times in 3 Posts

    Standard

    Mit Prioritäten hat das (glaube ich) nicht so viel zu tun. Ich hatte dem Listener eine Prio von -100 gegeben.

    Das Problem tritt auf, wenn eine Entität (Doctrine2) von einer anderen abgeleitet wird und die Kind Entität nicht in der DiscriminatorMap der Mutter-Klasse enthalten ist (zu Recht ;-)). Da meine Mutter-Klasse aber Bestandteil eines allgemeinen Moduls ist und Kind-Klassen in beliebig vielen weiteren Modulen auftreten können, brauch(t)e ich einen dynamischen Ansatz. Das muss dann VOR allem anderen laufen. Ich habe mich jetzt für einen Weg entschieden, der meiner Meinung nach ganz gangbar ist:

    Das Modul, dass eine Kind-Klasse enthält benötigt ohnehin einen 'doctrine' Eintrag in seiner Konfiguration. In diesem trage ich die Informationen für die Vererbung wie folgt ein:

    PHP-Code:
    'doctrine' => array(
        
    'discriminator_map' => array(
            
    'Base\Entity\BaseEntity' => array(
                   
    'child_entity' => 'Module1\Entity\Child1'
            
    )
    )), 
    //doctrine 
    Mein Listener (eingetragen in der application.config.php) macht dann folgendes:

    PHP-Code:
    public function attach(EventManagerInterface $events){
        
    $events->attach(\Zend\Mvc\MvcEvent::EVENT_BOOTSTRAP, function(MvcEvent $e) {
            
    $em $e->getApplication()->getServiceManager()->get('Doctrine\ORM\EntityManager');
            
    $config $e->getApplication()->getServiceManager()->get('Config');
            foreach (
    $config["doctrine"]['discriminator_map'] as $baseclass => $map) {
                foreach (
    $map as $discriminator_name => $classname ) {
                    
    $em->getClassMetadata$baseclass )->addDiscriminatorMapClass(
                                    
    $discriminator_name,
                                    
    $classname
                                
    );
                }
            }

        }, -
    100);} 
    Funktioniert erstmal.

    Thread kann gerne in den DB Bereich verschoben werden ;-)

  8. The Following 3 Users Say Thank You to dennis! For This Useful Post:

    acanadaparkas (20.05.2014), naracinapabl (22.05.2014), suggmenstiffany (23.05.2014)

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 26.09.2013, 11:17
  2. Ajax Content
    Von d_dub im Forum MVC
    Antworten: 1
    Letzter Beitrag: 10.07.2012, 17:45
  3. Ajax Controller
    Von deus im Forum Einsteigerfragen
    Antworten: 3
    Letzter Beitrag: 02.09.2010, 14:32
  4. Ajax
    Von Innocentus im Forum Einsteigerfragen
    Antworten: 1
    Letzter Beitrag: 21.01.2009, 17:31
  5. ajax integration
    Von proover im Forum Konzepte & Ideen
    Antworten: 6
    Letzter Beitrag: 10.01.2007, 14:16

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •