Динамический контроллер маршрута Laravel

Я использую Laravel 5.4, и теперь я хочу сделать динамический маршрут к контроллеру, что означает, что я могу получить доступ UserController а также Profile Функция бросить маршрут напрямую, например.

GET http://localhost/user/profile?userid=123

URL-адрес примера выше UserController и функция profile с динамическими параметрами после ?, И если я хочу получить доступ к другому контроллеру, мне просто нужно изменить user парам к Controller название.

Я создал такой маршрут, и он работает.

Route::get('v1/{controller_name}/{function_name}/{query?}', function ($controller_name, $function_name){

$app = app();
$controller = $app->make('\App\Http\Controllers\Api\\'.$controller_name.'Controller');
return $controller->callAction($function_name, $parameters = array());
});

Но я не знаю, как передать параметры.

Есть ли другой лучший способ сделать это?

4

Решение

Я не уверен, правильно ли я вас понимаю, но вы можете проверить следующее.

Route::get('v1/{controller_name}/{function_name}/{query?}',
function ($controller_name, $function_name, $query = null) {
var_dump($controller_name, $function_name, $query);
});

посещение HTTP: // локальный / v1 / мой-контроллер / моя функция / мой-параметр URL выходы:

string 'my-controller' (length=13)
string 'my-function' (length=11)
string 'my-parameter' (length=12)

посещение HTTP: // локальный / v1 / мой-контроллер / моя функция URL выходы:

string 'my-controller' (length=13)
string 'my-function' (length=11)
null

А чтобы расширить идею дальше, можно написать:

Route::get('v1/{controller_name}/{function_name}/{query?}/{query2?}',
function ($controller_name, $function_name, $query = null, $query2 = null) {
var_dump($controller_name, $function_name, $query, $query2);
});

HTTP: // локальный / v1 / мой-контроллер / моя функция / мой-параметр / мой-параметр2

string 'my-controller' (length=13)
string 'my-function' (length=11)
string 'my-parameter' (length=12)
string 'my-parameter2' (length=13)

HTTP: // локальный / v1 / мой-контроллер / моя функция

string 'my-controller' (length=13)
string 'my-function' (length=11)
null
null

Тогда вы можете использовать:

// ...
return $controller->callAction($function_name, $parameters = [
'param1' => $query,
'param2' => $query2,
]);
// ...
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]