Как передать дополнительную информацию из маршрута в контроллер
Как передать дополнительную информацию из маршрута в контроллер
Параметры внутри коллекции defaults
не обязательно должны совпадать
с заполнителями в маршруте path
. Более того, вы можетеиспользовать
массив defaults
, чтобы указать дополнительные параметры, доступные в
качестве аргументов вашего контроллера, и в качестве атрибутов объекта Request
:
1 2 3 4 5 6 7
# config/routes.yaml
blog:
path: /blog/{page}
controller: App\Controller\BlogController::index
defaults:
page: 1
title: "Hello world!"
Теперь вы можете получить доступ к этому дополнительному параметру в вашем контроллере, как к аргументу в методе контроллера:
1 2 3 4
public function index($page, $title)
{
// ...
}
В качестве альтернативы, заголовок может быть доступен через объект Request
:
1 2 3 4 5 6 7 8
use Symfony\Component\HttpFoundation\Request;
public function index(Request $request, $page)
{
$title = $request->attributes->get('title');
// ...
}
Как вы можете увидеть, переменная $title
никогда не была определена внутри
пути маршрута, но вы все равно можете получить доступ к ее значению изнутри
вашего контроллера, через аргумент метода или через мультимножество attributes
объекта Request
.