[PHP] - Laravel - Route路由

前言

这里使用的是Laravel 5

PHP Laravel的路由比较强悍,但也正因如此,不统一而容易凌乱。比如在路由中可以直接写方法操作(破坏封装啊)

以下是个人学习的例子,不供参考

 


 

路由中的直接方法调用和路由地址的使用规则例子

/**
 * 定义一个/hi地址,返回hi的view
 */
Route::get('/hi', function()
{
    return View::make("hi");
});

/**
 * 定义一个/hello地址,带参数,默认参考值为Robin
 * 地址访问如:/hello/myname
 */
Route::get("/hello/{name?}", function($name = "Robin"){
    return "Hello " . $name;
});

/**
 * 定义一个地址:/test/2222
 * 使用正则匹配参数id
 */
Route::get("/test1/{id}", function($id) {
    return "ID value = " . $id;
})->where("id", "\d+");

/**
 * 定义一个地址:/test2/123/robin
 * 使用正则匹配多个参数
 */
Route::get("/test2/{id}/{name}", function($id, $name){
    return "ID = " . $id . ", Name = " . $name;
})->where(["id"=>"\d+", "name"=>"[a-zA-Z]+"]);

/**
 * 定义一个/as/my地址,给此路由加一个别名为mm
 */
Route::get("/as/my", ["as" => "mm", function(){
    // 输入当前路由的名称,如果路由没有给指定别名,返回空值
    return Route::currentRouteName();
}]);

//------------------------------------------------------------------
// 测试POST提交
//------------------------------------------------------------------
Route::get("/test", function(){
    return View::make("test");
});

Route::post("/test3", function(){
    // 取得POST的test文本框输入值
    //return $_POST["test"];
    // 取得所有POST的内容
    //return Input::all();
    // 取得指定文本框的输入值
    return Input::get("test");
});

//------------------------------------------------------------------
// 测试预定义PID为整型
//------------------------------------------------------------------
$router->pattern("pid", "\d+");
Route::get("/test4/{pid}", function($pid) {
    return "Pattern ID = " . $pid;
});

当然了,它还有一些什么before、after之些的东西,这里就不写了。

 

路由使用Controller例子

/**
 * 使用Conntroller
 */
Route::get("/test5", ["as" => "test5", "uses" => "TestController@index"]);

/**
 * 使用Controller重定向
 */
Route:get("/test6", ["as" => "test6", "uses" => "TestController@test6"]);

/**
 * Route的重定向
 */
Route::get("test7",function(){
    return Redirect::to("test5");
});

/**
 * 使用Controller取得当前Route的名称,名称为:mytest8
 */
Route::get("test8", ["as" => "mytest8", "uses" => "TestController@test8"]);

/**
 * 使用Controller
 * Controller的方法前需要使用get开头
 */
Route::controller("/my/test", "my\MyTestController");

//------------------------------------------------------------------
// Controller Group
// 加入前缀my2,意思是在里头的所有路由地址都以my2开头
// 例如:http://localhost/my/add
//------------------------------------------------------------------
Route::group(["prefix" => "my2"], function() {
   Route::controller("/", "my\MyTest2Controller");
});

 

posted @ 2015-06-11 18:05  横渡  阅读(8233)  评论(0编辑  收藏  举报