Я пытаюсь настроить простую систему маршрутизации на основе соглашения. Мое приложение будет иметь такую структуруlaravel routing на основе соглашения
Http
--Controllers
----Admin
------User.php
----Books
------Add.php
----etc...
Я хочу, чтобы иметь возможность добавлять новые папки и контроллеры без добавления маршрутов вручную в файл web.php. Например, я хочу, чтобы маршрут отвечал на/Admin/User URL с помощью контроллера User.php.
Я что-то вроде этого пытается, но я не понимаю, как писать внутренний маршрутизатор ...
Route::any('/{module}/{action?}', function($module, $action = 'index') {
Route::get('*',$module.'\'.$action.'@index');
});
Кажется, что Разгром: получить («*» ... никогда не совпадает.
PS пространство имен контроллер является правильным, и я перезарядил с композитором. контроллер работает, если называется harcoded.
Я пытался также избежать «\»
$r=$module.'\\'.$action.'\\'.$action.'[email protected]';
Route::get('/',$r);
Но никакого результата. Маршрут перехвачен, но ничего я не служил
Обратите внимание, что такая практика будет сложной в обращении и очень трудно поддерживать. Вы должны писать маршруты с помощью жестко закодированных контроллеров. –
@ Оле, это тот комментарий, который я хотел услышать, но ПОЧЕМУ это так? С моей точки зрения, я экономлю время и техническое обслуживание, мне больше не нужно трогать маршруты! – Glasnhost
Поскольку вы должны создавать свои URL-адреса в своих представлениях, просматривая структуру исходного кода, и вы должны изменить все свои URL-адреса, когда вы меняете исходный код по тем или иным причинам. –