Я использую OctoberCMS на основе Laravel.Как анализировать идентификаторы сегмента URL в Laravel?
Я пытаюсь захватить сегменты URL-адреса, чтобы перейти в функцию области для фильтрации результатов базы данных.
Посещение localhost/user/john/nature проанализирует и отфильтрует эти результаты.
URL → Идентификаторы → Param Переменные → Область → База данных результатов
Page
[builderDetails builderUser]
identifierValue "{{ :username }}"
[builderDetails builderCategory]
identifierValue "{{ :category }}"
[builderList]
scope = "scopeApplyType"
url = /user/:username?/:category?/:page?
Модель Объем
Я хочу отфильтровать результаты базы данных, используя идентификаторы URL: имя пользователя и: категорию.
public function scopeApplyType($query) {
$params = ['username' => $username, 'category' => $category];
return $query->where($params);
}
Получить Идентификаторы
Это будет выводить запрашиваемые identifers в URL, в routes.php
Route::get('user/{username?}/{category?}', function ($username = null, $category = null) {
echo $username;
echo $category;
});
Выход
localhost/user/john/nature
john
nature
Soultion?
Маршрут :: get() не будет работать, мне нужно что-то внутри или передать в область действия, чтобы определить переменные params.
Что-то вроде:
$username = '{username?}';
$username = request()->url('username');
$username = $this->param('username'); //Components)
$username = $this->route('username');
$username = \Route::current()->getParameter('username');
Все возвращают нуль или ошибка.
Как, как вы обычно синтаксический анализ Запроса
$param = "username=john&category=nature";
$username = $category = '';
parse_str($param);
echo $username;
echo $category;
Или похож на запрос сегмента
$username = request()->segment(2); //user/:username
сегмент (2) представляет собой статическое расположение в отличие от {: категория}, которая может изменить позицию по разные URL-адреса.
Вы пробовали '$ request-> route ('parameter_name')' или '$ request-> route() -> parameters()'? –
@BenSwinburne Я получаю неопределенную переменную: request –
Вам нужно будет получить объект запроса 'request()' должен дать вам это. 'request() -> route()' –