2016-07-05 12 views
0

Nach dem ZF2 Handbuch sollte ich in der Lage sein, nicht-alphanumerische Zeichen verwenden Segmente in einer Route zu trennen:ZF2 - Routing, nicht alphanumerische Zeichen in einem Segment

zf2 manual routing

Ich habe eine der folgende Route:

'may_terminate' => true, 
    'child_routes' => [ 
    'image' => [ 
     'type' => 'segment', 
     'options' => [ 
     'route'  => '/image/:id-:width-:height-:slug-:ext', 
     'defaults' => [ 
      'controller' => ImageController::class, 
      'action'  => 'image' 
     ] 
     ], 
    ], 
], 

meiner Ansicht nach so etwas wie dies würde gelten:

/image/1-100-100-my_image.png 

Das Problem, das ich bin vor, ist dies:

Wenn ich so meine Strecke aufgestellt:

'route'  => '/image/:id-:width-:height-:slug-:ext', 

ich die folgende Fehlermeldung erhalten:

The requested URL could not be matched by routing. No Exception available

Wenn ich meinen Router aktualisieren, um:

'route'  => '/image/:id/:width/:height/:slug/:ext', 

Es funktioniert wie erwartet.

Ich verwende PHP7 mit ZF2 Version ~ 2.3

Während ich verwenden kann:/als Trennzeichen, offenbar ein Minuszeichen mehr Sinn macht. Was könnte das Problem sein?

Antwort

0

Vom manuellen

The {-} after the :foo parameter indicates a set of one or more delimiters, after which matching of the parameter itself ends.

Try {-} hinzuzufügen. Da - ein übliches Symbol ist, ist es kein Trennzeichen.

Und versuchen, Route Parameter zu beschreiben.

'image' => [ 
    'options' => [ 
     'constraints' => [ 
      'id' => '[0-9]+', 
      'width' => '[0-9]+', 
      'height' => '[0-9]+', 
      'slug' => '[\w\d]+', 
      'ext' => '\.png', 
     ] 
    ] 
] 
+0

Ich bin mir sicher, dass dies funktioniert, hatte einige interessante Probleme mit dem Skelett-Übersetzer nicht mögen die geschweiften Klammern. Dies wurde schließlich mit dieser Notation gelöst: 'route' => 'image /: id [-]: width [-]: height [-]: slug [.]: Ext', – HappyCoder