Извлеките значение параметра из разделенного слэшем URL, удалив лишние символы в Laravel - PullRequest
0 голосов
/ 26 апреля 2019

Я создаю маршруты для моего php-сервера на платформе laravel. Как извлечь правильное значение параметра из разделенного слешем URL, удалив ненужные биты?

Когда шаблон URL установлен в виде Route::get('user/{event_id}',function ($event_id){return view('rsvp',['event_id'=>$event_id]);})->where(['event_id'=>'[0-9]+']);

работает точно так, как ожидалось. Тем не менее, я хочу проанализировать URL в виде 'user/event-description-here5_now-<event_id> и достичь той же функциональности. То есть я хочу использовать event_id в моем php-файле и игнорировать бит event-description-here5_now. Как мне поступить об этом?

1 Ответ

1 голос
/ 26 апреля 2019

Это невозможно, так как привязка модели маршрута laravel работает через подстановочный знак и не работает при попытке извлечь числа из сегмента URL.

Для того, чтобы это работало, вам придетсянастроить логику разрешения маршрута laravel: https://laravel.com/docs/5.8/routing#route-model-binding

что-то вроде:

public function boot()
{
    parent::boot();
    Route::bind('eventslug', function ($value) {
        preg_match('/\d+/', strrev($value), $matches);
        return Event::find($matches[0]) ?? abort(404);
    });
}

Или попробуйте изменить URL-адрес следующим образом:

user/event-description-here5_now/{event_id}

...