laravel中的动态路线而不是手动路线

时间:2015-05-05 04:34:05

标签: php laravel model-view-controller routes

我想阻止在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)){...}

在作曲家中定义我的路线, 那就是

2 个答案:

答案 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();
});