2015-08-24 4 views
2

Я хочу, чтобы проверить сегмент конкретного URL на маршруте и на основе стоимости сегмента решить его для обработки на другой route.Somewhat, как показано ниже:условные вложенные маршруты в Laravel

Route::get('{module}/{seg}', function(){ 
     if (is_numeric((Request::segment(3)) { 
      return Route::get('{module}/{seg}',Request::segment(2) . '[email protected]'); 
     }else{ 
      return Route::get('{module}/{seg}',Request::segment(2).'[email protected]' . Request::segment(3)); 
     } 

    }); 

Я не думаю, что выше код работает, но может ли кто-нибудь предложить рабочий код для реализации выше логики в laravel?

+0

Что вы имеете в виду, вы не думаете, что это работает? Вы не пробовали? –

+0

@ BenSwinburne, я сделал, и он забросил ошибку. Ошибка может быть выше кода или какой-либо другой причины. Поэтому, прежде чем продолжить копать, я хочу убедиться, что правильный метод для реализации логики, как указано выше, в laravel. – Sumit

ответ

2

Я бы предложил добавить его в качестве необязательного параметра и обработать различия в контроллере. Учитывая ваш код, это может выглядеть так:

// route 
Route::get('{module}/{seg}/{param?}', '[email protected]'); 

// controller 
public function index($module, $seg, $param = null) 
{ 
    // for dynamic index methods 
    if (is_numeric($param)) { 
     $method = 'index' . $param; 
     return $this->{$method}(); 
    } 
    // for non-numeric third-segment params, continue here as usual 
} 
Смежные вопросы