2015-03-09 2 views
1

Мне нужно сделать маршрут, который имеет тире после переменных. То, что я хочу, это легко объяснить с помощью кода (это то, что я пытался и `ы не работает)Laravel Routing - черточки

Route::any('tournament/{sportName}/{regionName}/{tournamentName}-odds', array('as' => 'tournament-page', 'uses' => '[email protected]')); 

проблема эта часть«-odds». Когда я добавляю, что я получаю ошибку Laravel этого содержания

$others = $this->checkForAlternateVerbs($request); 

     if (count($others) > 0) 
     { 
      return $this->getOtherMethodsRoute($request, $others); 
     } 

     throw new NotFoundHttpException; 

Как я могу это сделать (добавить дефис после параметров в маршрутах)? Спасибо

+1

ваш код работает нормально. что такое ошибка __exact__? – itachi

+0

Снимок экрана с ошибкой, http://imgur.com/T51oRau и URL-адрес, к которому я пытаюсь обратиться, - . Domain.com/tournament/soccer/england/premier-league-odds –

+1

@VladimirSabo - нет «конных гонок» в этом URL. –

ответ

0

Проблема заключается в том, что если после параметра маршрута приходит один из следующих символов: /,;.:-_~+*[email protected]|, вы не можете использовать его внутри этого параметра маршрута, потому что Laravel настраивает регулярное выражение, чтобы исключить этот параметр.

Я считаю, что причиной этого является сценарий, как: test/{foo}-{bar}

Это означает, что вы могли бы, очевидно, изменить URL, чтобы не использовать - внутри параметра маршрута, или указать условие регулярное выражение, которое применяется к tournamentName самостоятельно, используя where() :

Route::any('tournament/{sportName}/{regionName}/{tournamentName}-odds', 
     array('as' => 'tournament-page', 'uses' => '[email protected]') 
    )->where('tournamentName', '[^\/]+');