turk porno porno escort rokettube
Ergebnis 1 bis 8 von 8

Thema: Locale aus der URL automatisch im URL-View-Helper und URL-Controller-Plugin verwenden

  1. #1
    Benutzer
    Registriert seit
    10.10.2008
    Beiträge
    55
    Thanks
    5
    Thanked 0 Times in 0 Posts

    Beitrag Locale aus der URL automatisch im URL-View-Helper und URL-Controller-Plugin verwenden

    Hallo,

    ich benötige bitte Eure Hilfe.

    Ich möchte gerne, dass URL-View-Helper und Controller-URL-Plugin die Sprache aus der URL (/de/... oder /en/...) verwenden und nicht den default Wert aus der Konfiguration der Routen, wenn in der URL vorhanden:

    Folgende Routen habe ich konfiguriert:
    Code:
    'home' => array(
      'type' => 'Literal',
      'options' => array(
        'route'  => '/',
        'defaults' => array(
          'controller' => 'Index',
          'action'   => 'index',
        ),
      ),
    ),
    'application' => array(
      'type'  => 'segment',
      'options' => array(
        'route'  => '/[:locale[/:module[/:controller[/:action]]][/]',
        'constraints' => array(
          'locale'   => '[a-z]{2}',
          'module' => '[a-zA-Z][a-zA-Z0-9_-]*',    
          'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
          'action'   => '[a-zA-Z][a-zA-Z0-9_-]*',
        ),
        'defaults' => array(
          'locale'   => 'de',
          'module'   => 'application',
          'controller' => 'index',
          'action'   => 'index',
        ),
      ),
      'may_terminate' => true,
      'child_routes' => array(
        'default' => array(
          'type'  => 'Wildcard',
          'options' => array(),
        ),
      ),
    ),
    Die Navigation funktioniert problemlos mit der Route "application" und generiert die URLs mit der Locale aus der aktuellen URL, z. B.:
    /de/artikel/detail

    Aber wenn ich das URL-Controller-Plugin verwende:
    Code:
    echo $this->url()->fromRoute('application', array('action' => 'detail'));
    Muss ich die Locale per Hand als Parameter übergeben, damit nicht der default Wert verwendet wird?!?
    Code:
    echo $this->url()->fromRoute('application', array('action'  => 'detail', 'locale' =>  \Locale::getPrimaryLanguage(\Locale::getDefault())));
    Kann nicht generell die Locale für den View-Helper und das Controller-Plugin gesetzt werden, wenn es in der URL vorhanden ist (wie Zend Navigation)?

    Besten Dank schon mal für Eure Hilfe.

    Viele Grüße

    Sven.

  2. #2
    Erfahrener Benutzer Avatar von Ralf
    Registriert seit
    14.12.2006
    Beiträge
    450
    Thanks
    0
    Thanked 47 Times in 37 Posts

    Standard

    Ganz kurz: übergib als dritten Parameter ein true, dann werden alle Werte aus der aktuellen Route übernommen:

    PHP-Code:
    echo $this->url()->fromRoute('application', array('action' => 'detail'), true); 
    Gruß,

    Ralf

  3. The Following User Says Thank You to Ralf For This Useful Post:

    Sunnysven (06.05.2013)

  4. #3
    Erfahrener Benutzer Avatar von Ralf
    Registriert seit
    14.12.2006
    Beiträge
    450
    Thanks
    0
    Thanked 47 Times in 37 Posts

    Standard

    P.S. Funktioniert beim URL Plugin genauso...

  5. #4
    Benutzer
    Registriert seit
    10.10.2008
    Beiträge
    55
    Thanks
    5
    Thanked 0 Times in 0 Posts

    Standard

    Hallo Ralf,

    besten Dank für deine Hilfe. Leider funktioniert das nicht und in deinem Buch finde ich dazu auch keine Lösung.

    Funktioniert nicht, nimmt immer den default Wert der Route:
    PHP-Code:
    echo $this->url()->fromRoute('application', array('action' => 'detail'), true); 
    Funktioniert, nimmt immer die übergebene Locale:
    PHP-Code:
    echo $this->url()->fromRoute(
      
    'application',
      array(
        
    'locale' => \Locale::getPrimaryLanguage(\Locale::getDefault()),
        
    'controller' => 'artikel',
        
    'action' => 'index'
      
    ),
      
    true
    ); 
    Was mach ich falsch?

    Nachtrag 11:11 Uhr:
    Ich hab mal im Controller-Plugin-Url eine Testausgabe von "$matches->getParams()" gemacht:
    Code:
    Array
    (
      [locale] => de
      [module] => application
      [controller] => artikel
      [action] => detail
    )
    Steht immer bei der "locale" nur "de" drin und nie "en".

    Gruß
    Sven.
    Geändert von Sunnysven (03.05.2013 um 13:13 Uhr)

  6. #5
    Erfahrener Benutzer Avatar von Ralf
    Registriert seit
    14.12.2006
    Beiträge
    450
    Thanks
    0
    Thanked 47 Times in 37 Posts

    Standard

    Hallo Sven,

    ok, verstehe ich das richtig, dass du bei der URL /en/artikel/detail in den Routing-Parametern kein "en", sondern ein "de" bekommst? Wenn das so ist, ist dein Routing aus dem ersten Beitrag denn vollständig? Oder gibt es andere Module, die Routen definieren? Was soll das [/] am Ende bewirken?

    Gruß,

    Ralf

  7. #6
    Benutzer
    Registriert seit
    10.10.2008
    Beiträge
    55
    Thanks
    5
    Thanked 0 Times in 0 Posts

    Standard

    Hallo Ralf,

    das ist meine komplette Route (den Slash am Ende hatte ich gestern mal entfernt - passt):
    Code:
    'routes' => array(
        'home' => array(
            'type' => 'Literal',
            'options' => array(
                'route'    => '/',
                'defaults' => array(
                    'controller' => 'Index',
                    'action'     => 'index',
                ),
            ),
        ),
        'application' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '[/:locale[/:controller[/:action]]]',
                'constraints' => array(
                    'locale'     => '[a-z]{2}',
                    'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'         => '[0-9]+',
                ),
                'defaults' => array(
                    'locale'     => 'de',
                    'module'     => 'application',
                    'controller' => 'index',
                    'action'     => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'default' => array(
                    'type'    => 'Wildcard',
                    'options' => array(),
                ),
            ),
        ),
    ),
    Ein weiteres Modul gibt es derzeit nicht.

    ok, verstehe ich das richtig, dass du bei der URL /en/artikel/detail in den Routing-Parametern kein "en", sondern ein "de" bekommst?
    Ja, egal wie die URL lautet (zf2.localhost/en/artikel oder zf2.localhost/de/artikel) bekomme ich bei der Ausgabe von "$routeMatchParams" immer nur folgende Werte des Arrays:
    Code:
    Array
    (
        [locale] => de
        [module] => application
        [controller] => artikel
        [action] => index
    )
    Und die kann er mergen wie er lustig ist mit den default Werten der Routen-Konfiguration, da wird aus "de" niemals ein "en".

    Gruß
    Sven.

  8. #7
    Erfahrener Benutzer Avatar von Ralf
    Registriert seit
    14.12.2006
    Beiträge
    450
    Thanks
    0
    Thanked 47 Times in 37 Posts

    Standard

    Hallo Sven,

    damit liegt das Problem wohl im Routing und nicht im View Helper / Plugin. Tja, du solltest das einmal schrittweise aufbauen. Also zuerst ohne child_routes und nur mit dem locale Segment.

    Wenn das auch schon nicht klappt, kann es nur noch sein, dass das Routing zwar korrekt läuft, aber der locale Wert woanders überschrieben wird.

    Wenn das klappt, dann erst das controller Segment ergänzen und prüfen und danach das action Segment. Zum Schluss dann die child_routes ergänzen.

    Gruß,

    Ralf

  9. The Following User Says Thank You to Ralf For This Useful Post:

    Sunnysven (06.05.2013)

  10. #8
    Benutzer
    Registriert seit
    10.10.2008
    Beiträge
    55
    Thanks
    5
    Thanked 0 Times in 0 Posts

    Standard

    Hallo Ralf,

    besten Dank, es hat geklappt. Es wurde tatsächlich noch die Locale an alter Stelle per Hand gesetzt.

    Gruß
    Sven.

Ähnliche Themen

  1. Auf Controller-Plugin im View-Helper zugreifen
    Von VitoNordloh im Forum ZF2 Grundlagen
    Antworten: 0
    Letzter Beitrag: 04.03.2013, 13:59
  2. Problem bei verwenden eigener View Helper
    Von Lit-Web im Forum Einsteigerfragen
    Antworten: 15
    Letzter Beitrag: 06.02.2013, 15:40
  3. Locale setzen bei partial-View-Helper / für View script
    Von Innocentus im Forum Einsteigerfragen
    Antworten: 5
    Letzter Beitrag: 17.06.2012, 22:47
  4. URL-View-Helper in Action-Controller verwenden.
    Von matthias1309 im Forum Core
    Antworten: 1
    Letzter Beitrag: 27.06.2009, 13:35
  5. Antworten: 2
    Letzter Beitrag: 16.02.2009, 18:00

Lesezeichen

Berechtigungen

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