我想阻止在Laravel route.php中写入所有路由,实际上我遵循这样的MVC路由www.example.com/controller/action/p1/p2/p3 如果你有任何好主意,请给我, 我写了这个
$controller = ucfirst(Request::segment(1));
$controller = $controller . 'Controller';
$result=App::make('indexController')->ChechIfExistController($controller);
if($result){
if(Request::segment(2))
$action=Request::segment(2);
else
$action='index';
if(Request::segment(5))
Route::any('/{controller?}/{action?}/{p1?}/{p2?}/{p3?}',array('uses'=>$controller.'@'.$action));
else if(Request::segment(4))
Route::any('/{controller?}/{action?}/{p1?}/{p2?}',array('uses'=>$controller.'@'.$action));
else if(Request::segment(3))
Route::any('/{controller?}/{action?}/{p1?}',array('uses'=>$controller.'@'.$action));
else
Route::any('/{controller?}/{action?}',array('uses'=>$controller.'@'.$action));
} else{
echo '404';
EXIT;
}
但我不知道如何控制和检查laravel中的控制器和动作以了解它是否存在。 我需要你的帮助。 非常感谢。
ifound它,这段代码修复了问题,并检查是否存在动作,但我想用laravel做到这一点,但似乎laravel没有任何检查控制器和动作的东西
$controller=='Controller'?$controller='IndexController':$controller;
$controllers=new $controller ();
if(method_exists($controllers,$action)){...}
在作曲家中定义我的路线, 那就是
答案 0 :(得分:1)
routes.php文件
Route::controllers([
'auth' => 'Auth\AuthController',
]);
在AuthController中你可以这样做:
// will be available as METHODNAME /auth/url/{one?}/{two?}/{three?}/{four?}/{five?}
public [methodName]Url($one, $two, $three, $four, $five)
{
//...
}
// for example POST /auth/register
public function postRegister(Request $request)
{
// ...
}
// GET /auth/login
public function getLogin()
{
//...
}
没有记录,但你可以在消息来源中看到: https://github.com/laravel/framework/blob/5.0/src%2FIlluminate%2FRouting%2FControllerInspector.php https://github.com/laravel/framework/blob/5.0/src%2FIlluminate%2FRouting%2FRouter.php#L238
答案 1 :(得分:0)
可以这样做: 首先,我们必须编写静态路由,然后编写使用数据库的动态路由。
<强> routes.php文件强>
Route::get('/', function () {
return 'welcome';
});
Route::get('/faq', function () {
return 'faq';
});
Route::get('/about', function () {
return 'about';
});
Route::get('/{slug}', function ($slug) {
return Article::where('slug', $slug)->first();
});