porno porno izle rokettube
Ergebnis 1 bis 10 von 10

Thema: Speichern von Domainabhängigem Objekt in Service Manager

  1. #1
    Benutzer
    Registriert seit
    07.03.2013
    Beiträge
    62
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard Speichern von Domainabhängigem Objekt in Service Manager

    Hi,

    ich möchte gern anhand der Domain ein Objekt im Service Manager ablegen, wofür ich folgende Factory erstellt habe. Das Problem dabei ist nun, dass ich für die "Standard-Domain" kein Objekt habe und die Applikation somit hinfällt, da die Factory nicht null zurück geben kann. Wie kann ich dieses problem lösen?

    PHP-Code:
    namespace Client\Factory;

    use 
    Zend\ServiceManager\FactoryInterface;
    use 
    Zend\ServiceManager\ServiceLocatorInterface;

    class 
    ClientFactory implements FactoryInterface {

        public function 
    createService(ServiceLocatorInterface $serviceLocator) {
            
    /* @var $clientService \Client\Service\ClientServiceInterface */
            
    $clientService $serviceLocator->get('Client\Service\Client');
            
    $uri $serviceLocator->get('Request')->getUri();
            
    $baseUrl $uri->getScheme() . '://' $uri->getHost();
            
            return 
    $clientService->getClientByBaseUrl($baseUrl);
        }


    Die Datenbank dazu schaut folgendermaßen aus:

    id name base_url
    1 test test.mydomain.de

    Wenn ich die Applikation über die Domain "test.mydomain.de" aufrufe, finde ich über den Service den Eintrag in der DB und alles funktioniert wunderbar. Sobald ich aber über "www.mydomain.de" komme, sollte das ganz einfach null zurück geben Hmm kompliziert zu erklären...

    Danke für jeden Hinweis

  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.479
    Thanks
    3
    Thanked 347 Times in 278 Posts

    Standard

    Zitat Zitat von domeb Beitrag anzeigen
    ich möchte gern anhand der Domain ein Objekt im Service Manager ablegen
    Ich frage mal wieder von der anderen Seite!

    Wozu? Was soll das bringen?

    (Dein Vorhaben hört sich irgendwie gefährlich an.)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    Benutzer
    Registriert seit
    07.03.2013
    Beiträge
    62
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ich möchte Quasi Mandantenabhängige Dinge in meiner Applikation tätigen. Es wird so sein, dass es eine Stammdomain MyDomain gibt, in welcher einfach alles so bleibt wie gehabt. Nun soll es Mandanten geben, die eine Subdomain zugewiesen bekommen. Wenn man nun über diese Domain kommt, wird z. B. das Logo des zugehörigen Mandanten angezeigt. Außerdem sollen gewisse andere Bereiche des Programms darauf abstimmt werden. Magento macht das z. B. mit den verschiedenen Store Views (Falls du dich in Magento etwas auskennst).

  4. #4
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.479
    Thanks
    3
    Thanked 347 Times in 278 Posts

    Standard

    Zitat Zitat von domeb Beitrag anzeigen
    Ich möchte Quasi Mandantenabhängige Dinge in meiner Applikation tätigen.

    Wenn man nun über diese Domain kommt, wird z. B. das Logo des zugehörigen Mandanten angezeigt.
    Sind dies nicht unterschiedliche Optionen für die Anwendung bzw. könnte man dies nicht so betrachten?

    Wenn ja, dann einfach als Option so umsetzen und im „ServiceManager“ so ablegen. Diesen können dann von allen relevanten Klassen so verwendet werden.
    Die Optionen stehen dann immer zur Verfügung und wenn mal nichts für eine einzelne Eigenschaft hinterlegt ist, dann auch nicht schlimm. Im Notfall endet es in einem „leeren“ Objekt für „www.mydomain.de“.

    Oder habe ich es völlig falsch verstanden?
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  5. #5
    Benutzer
    Registriert seit
    07.03.2013
    Beiträge
    62
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    hmm, das glaube ich nicht. Ich benötige z. B. auch die Mglichkeit einen manuelle Link auf die Mandantenseite zu setzen. Dies würde ich durch Überschreiben des Url Helpers machen, in dem dieser einen Weiteren Parameter "client" erhält, und ich dadruch die base url des Mandanten Vorstellen könnte. Auérdem müssen diverse Abschnitte der Seite geändert werden, wenn ich mich auf einer Seite eines Mandanten befinde.

    Ich wüsste nicht wie ich das mit Options lösen sollte, bin aber für Anregungen gerne offen

  6. #6
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.479
    Thanks
    3
    Thanked 347 Times in 278 Posts

    Standard

    Zitat Zitat von domeb Beitrag anzeigen
    Dies würde ich durch Überschreiben des Url Helpers machen, in dem dieser einen Weiteren Parameter "client" erhält, und ich dadruch die base url des Mandanten Vorstellen könnte.
    Fabrik für den Url-Helfer erstellen und dort die Optionen abfragen und entsprechend den URL-Helfer initialisieren.

    Ich denke, man könnte aber auch die Standardparameter vom Router verwenden („default_params“ in einer module.config.php). Diese könnten bestimmt per Listener am „MvcEvent“ angepasst werden.

    Zitat Zitat von domeb Beitrag anzeigen
    Auérdem müssen diverse Abschnitte der Seite geändert werden, wenn ich mich auf einer Seite eines Mandanten befinde.
    Je nachdem was geändert werden muss, würde ich hier einen Listener vorschlagen, der auf die Render-Ereignisse hört und dann entsprechend anpasst. (z.B. View-Skript wechseln, …)

    Ich denke ziel sollte es sein, die Optionen oder dein „Client\Service“-Objekt aus der eigentlichen Anwendung raus zu halten. Davon muss diese nichts wissen, daher die entsprechende Konfiguration vorher bzw. die Anpassung durch die Listener.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  7. #7
    Benutzer
    Registriert seit
    07.03.2013
    Beiträge
    62
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Fabrik für den Url-Helfer erstellen und dort die Optionen abfragen und entsprechend den URL-Helfer initialisieren.
    Das könnte ich dann aber nur per request machen. Ich habe aber das Bedürfniss, auf die Seiten mehrerer Mandanten zu verlinken. Also ich befinde mich jetzt auf "www.mydomain.de" und muss von dort aus ein Link auf "client1.mydomain.de/meine-tolle-seite" und "client2.mydomain.de/meine-tolle-seite". Dies bekomme ich meines erachtens nur hin, wenn ich in der View, wo der Link gesetzt wird den entsprechenden Client übergebe.

    Je nachdem was geändert werden muss, würde ich hier einen Listener vorschlagen, der auf die Render-Ereignisse hört und dann entsprechend anpasst. (z.B. View-Skript wechseln, …)
    Beispielsweise soll im header ein weiteres Logo ergänzt werden, welches sonst nicht dort ist. Das hätte ich jetzt z. B. über einen View Helper gelöst, was dann in der View folgenderamßen ausschaut:

    PHP-Code:
    <?php if ($this->client()->hasIdentity()) { ?>
        Füge hier mein tolles Logo ein.
    <?php ?>
    Der View Helper würde dann das im Service Manager abgelegten Client Objekt abfragen. Allerdgins kann ich dort ja nicht null zurückgeben...

    Danke dir schon jetzt für deine Mühe!

  8. #8
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.479
    Thanks
    3
    Thanked 347 Times in 278 Posts

    Standard

    Zitat Zitat von domeb Beitrag anzeigen
    Also ich befinde mich jetzt auf "www.mydomain.de" und muss von dort aus ein Link auf "client1.mydomain.de/meine-tolle-seite" und "client2.mydomain.de/meine-tolle-seite". Dies bekomme ich meines erachtens nur hin, wenn ich in der View, wo der Link gesetzt wird den entsprechenden Client übergebe.
    Klar, logisch. Hier sehe ich aber kein Problem, denn bei diesen konkreten Links braucht es auch keinen angepassten View-Helfer.

    Zitat Zitat von domeb Beitrag anzeigen
    Das hätte ich jetzt z. B. über einen View Helper gelöst…
    Über Fabrik ebenfalls aus den Optionen vorkonfigurieren.

    Zitat Zitat von domeb Beitrag anzeigen
    Der View Helper würde dann das im Service Manager abgelegten Client Objekt abfragen. Allerdgins kann ich dort ja nicht null zurückgeben...
    Bei Variante über die Optionen stellt sich die Frage nicht. (Dein Client-Objekt hält doch auch nur ein paar Werte, daher die Überlegung mit der Klasse für Optionen.)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  9. #9
    Benutzer
    Registriert seit
    07.03.2013
    Beiträge
    62
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Hmm also das mit der base url versteh ich soweit noch. Diese würde ich standardmäßig in einer Konfiguration ablegen. Dann in der OptionsFactory schauen, ob ich einen client in der DB finde und wenn dem so ist, die base url in die options schreiben.

    Allerdings versteh ich das mit den Links dann nicht so wirklich... Also in meiner View habe ich momentan beispielsweise folgendes stehen:

    PHP-Code:
    <?php 
    // Returns /my-route
    echo $this->url('my-route', ['param' => 'test']);
     
    ?>
    Wenn ich nun aber den exakt gleichen Link auf eine Mandantenseite haben will, muss ich dem Helper doch irgendwie sagen, dass ich auf client1.mydomain.de/myroute gehen will und nicht auf /my-route. Ich kenne die Option force_canonical, aber dann ergänzt er auch nur die Domain auf der ich mich gerade befinde und eben nicht jene von einem bestimmten Mandanten (woher soll er das auch wissen

  10. #10
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.479
    Thanks
    3
    Thanked 347 Times in 278 Posts

    Standard

    Zitat Zitat von domeb Beitrag anzeigen
    Wenn ich nun aber den exakt gleichen Link auf eine Mandantenseite haben will…
    Das kam aber leider in deinem Beitrag zuvor anders herüber, denn ich habe verstanden du wolltest von einem Mandanten auf den anderen verweisen.

    Zitat Zitat von domeb Beitrag anzeigen
    muss ich dem Helper doch irgendwie sagen, dass ich auf client1.mydomain.de/myroute gehen will und nicht auf /my-route.
    Dazu sollte mein Hinweis zu weiter oben passen:

    Ich denke, man könnte aber auch die Standardparameter vom Router verwenden („default_params“ in einer module.config.php). Diese könnten bestimmt per Listener am „MvcEvent“ angepasst werden.
    Einfach mal ausprobieren.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 27.01.2014, 12:12
  2. Eigener Validator - Registrierung im Service Manager
    Von frollein im Forum ZF2 Formulare
    Antworten: 3
    Letzter Beitrag: 09.09.2013, 13:21
  3. Zugriff von IndexFactory auf ein Service über ServiceFactory
    Von Tommy2002 im Forum ZF2 Einsteigerfragen
    Antworten: 1
    Letzter Beitrag: 28.11.2012, 15:02
  4. Service Manager leer nach Post
    Von sodiummd im Forum ZF2 Einsteigerfragen
    Antworten: 2
    Letzter Beitrag: 13.10.2012, 01:16
  5. Antworten: 2
    Letzter Beitrag: 02.01.2012, 17:31

Lesezeichen

Berechtigungen

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