2016-10-30 3 views
0

Я пытаюсь настроить простую систему маршрутизации на основе соглашения. Мое приложение будет иметь такую ​​структуру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); 

Но никакого результата. Маршрут перехвачен, но ничего я не служил

ответ

0

Кажется, я придумал этот

Route::get('/{module}/{action}', function($module,$action) { 

    return App::make('\App\Http\Controllers\\' 
        .$module.'\\'.$action)->callAction('index', []); 

    }); 

Любой другой способ лучше?

+2

Обратите внимание, что такая практика будет сложной в обращении и очень трудно поддерживать. Вы должны писать маршруты с помощью жестко закодированных контроллеров. –

+0

@ Оле, это тот комментарий, который я хотел услышать, но ПОЧЕМУ это так? С моей точки зрения, я экономлю время и техническое обслуживание, мне больше не нужно трогать маршруты! – Glasnhost

+0

Поскольку вы должны создавать свои URL-адреса в своих представлениях, просматривая структуру исходного кода, и вы должны изменить все свои URL-адреса, когда вы меняете исходный код по тем или иным причинам. –