Могут ли laravel функции контроллеров быть переменными? - PullRequest
0 голосов
/ 20 января 2020

Мой вопрос прост: я хочу создать переменный маршрут, но я хочу создать переменную внутри маршрута.

Возможно ли это?

Route::get('/{tabla}/get','WebSystem\{tabla}@{tabla}')->name('activities');

Ответы [ 4 ]

2 голосов
/ 20 января 2020

Вы можете использовать другую нотацию (для этого требуется изменить пространство имен по умолчанию в вашем routeServiceProvider):

Route::get('/{tabla}/get, [ExampleController::class, 'methodName'])->name('activities');

Что приводит нас к:

$controller = ExampleController::class;
$methodName = 'methodName';
Route::get('/{tabla}/get', [$controller, $methodName]);

Кроме того, этот подход гарантирует, что некоторые IDE (например, PhpStorm) будут рефакторинг ваших маршрутов. Например: когда вы хотите изменить имя или пространство имен вашего контроллера.

1 голос
/ 20 января 2020

да, вы можете.

веб. php

   $func_name = 'testFunction';
   Route::get('test', "Controller@{$func_name}");

контроллер. php

    public function testFunction()
    {
        echo 'yes working';
        die;
    }
0 голосов
/ 20 января 2020

См. Ниже, это может работать,

Route::get('/one/{class}/{method}', function(Request $request, $class, $method) use ($router) {
    $n = "App\Http\Controllers\ $class";
    $n = explode(' ', $n);
    $n = implode('', $n);
    $n = new $n;

    return $n->{$method}($request);
});
0 голосов
/ 20 января 2020

Вы можете использовать этот метод

Route::get('/{tabla}/get, [Controller::class,'method'])->name('activities');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...