2016-10-17 3 views
0

мой каркас laravel 5.2, мой сайт Купить билет на самолет.Как преобразовать URL-адрес в Laravel 5.2?

from: Тегеран, Имам Хомейни Международный (ИКА), Иран.

to: Лондон (LON), Соединенное Королевство.

date: дата полета.

adult: 2 человека, child: 1 человек, infant: 0 человек.

текущий URL является:

http://localhost:8000/flights?from=IKA&to=LON&date=2016-11-25&adult=2&child=1&infant=0 

Я хочу изменить этот URL:

http://localhost:8000/flights/IKA-LON/2016-11-25/2-1-0 

Как я могу достичь этой цели?

ответ

1

В качестве более жесткой альтернативы, ваш маршрут может быть зарегистрирован как это:

Route::get('flights/{from}-{to}/{date}/{people}', function ($from, $to, $date, $people) { 
    list($adults, $children, $infants) = explode('-', $people); 
    dd([$from, $to, $date, $adults, $children, $infants]); 
})->where([ 
    'date'=>'\d{4}\-\d{2}\-\d{2}', 
    'people'=>'[0-9]+\-[0-9]+\-[0-9]+' 
]); 

Это гарантирует, ваш маршрут содержит правильное форматирование до того, признаются действительными.

+0

Большое вам спасибо, этот URL-адрес является односторонним, но если пользователь выбрал обратный маршрут, этот маршрут: Маршрут :: get ('/ flights/{from} - {to}/{ go-date}/{return-date}/{ad ult} - {child} - {infant} ', ...); Что мне делать? – mySun

+1

Задайте новый вопрос с этими требованиями. Как бы то ни было, мы все ответили на ваш первоначальный вопрос. – maiorano84

+0

Большое вам спасибо, я не могу просить до 90 минут. – mySun

1

Ваш маршрут будет похож

Route::get('/flights/{from}-{to}/{date}/{adult}-{child}-{infant}', '[email protected]'); 

Контроллер

public function details($from, $to, $date, $adult, $child, $infant) 
{ 

} 
+0

Большое вам спасибо, этот URL-адрес является односторонним, но если пользователь выбрал обратный маршрут, этот маршрут: Маршрут :: get ('/ flights/{from} - {to}/{go-date}/{return-date}/{adult} - {child} - {infant} ',' YourController @ details '); Что мне делать? – mySun

+0

Вы можете использовать необязательные параметры, например {return-date?} – aleksejjj

+0

Большое вам спасибо ... – mySun

1

Первый шаг сделать route для вас новый адрес

Route::get('flights/{from}-{to}/{date}/{adult}-{child}-{infant}', '[email protected]'); 

Далее вам нужно прочитать содержимое URL-адрес в вашем контроллере

+0

Большое вам спасибо, этот URL-адрес в одностороннем порядке, но если пользователь выбрал обратный маршрут, этот маршрут: Маршрут :: get ('/ flights/{from} - {to}/{go-date}/{return-date}/{ad ult} - {child} - {infant}', 'MyController @ Index'); Что мне делать? – mySun

+0

Я бы добавил дополнительные пули вроде этого/{way}/{return_date}, где/s означает односторонний путь или/r означает обратный билет,/and_return_date, если/s, тогда дата возврата должна быть нулевой. –

+0

Большое спасибо maytham .. – mySun