2016-05-28 16 views
1

Ich habe eine kleine Frage bezüglich des Routing mit Zend Framework 2. URLs mit "normalen" Buchstaben funktionieren gut und ich stehe auf meinen Seiten, aber zum Beispiel eine URL mit Zeichen wie á oder whitespaces /test/some characters/test/héllo wird nicht funktionieren und ich bekomme einen 404-Fehler. Wenn ich die Whitespaces in der URL entferne oder das Sonderzeichen é durch ein normales "e" ersetze, erhalte ich auch meine URL.ZF2 Routing mit Sonderzeichen

Also ich denke, das Problem ist in meiner module.config.php mit den Einschränkungen. Wie kann ich diese Sonderzeichen definieren, um die URLs zu erreichen? Hoffe du kannst mir helfen!

module.config.php URL Segment

'chemistry' => array(
    'type' => 'Segment', 
    'options' => array(
     'route' => '[/:id[/:name]]/chemistry/page[/:page]', 
     'constraints' => array(
      'id' => '[0-9]*', 
      'name' => '[a-zA-Z][a-zA-Z-]*', 
      'page' => '[0-9]*' 
     ), 
     'defaults' => array(
      'action'=> 'chemistry', 
      'id' => '1', 
      'name' => 'Messi', 
      'page' => '1' 
     ), 
    ), 
), 
+0

Könnte ein Duplikat http://stackoverflow.com/questions/16097053/route- sein mit-special-characters-sind-nicht-geparst-korrekt-in-zend-framework-2 – Saeven

+0

Danke für den Link, hat aber nicht für mich geklappt. –

Antwort

0

Sie einen regulären Ausdruck in Ihrer Route Einschränkungen verwenden. Wenn Sie solche Streckensegmente abgleichen möchten, sollten Sie Ihre Regex-Einschränkung entsprechend ändern. Wenn Sie also einen Streckenabschnitt mit einem Leerzeichen entsprechen wollen, müssen Sie es zu Ihrem regulären Ausdruck hinzuzufügen:

  • Räume im Segment überall entsprechen:

    '[a-zA-Z ]+'

  • Worte entsprechen mit Leerzeichen dazwischen.

    '[a-zA-Z]+([a-zA-Z]+)*'

Sie können mehr über Regex lesen Routing hier im Abschnitt Zend\Mvc\Router\Http\Regex in Kapitel Routing

+0

Das erste war auch in meinem Kopf, aber funktionierte nicht für mich. Auch Ihr zweiter Vorschlag ist fehlgeschlagen: / –