Coder之路 / PHP 编程 · 2015/01/19 0

Laravel 4 创建模块 Module.

模块作为一个整体, 便于开发和维护, 是一种有效的编码手段. Yii中原生, 支持模块, 那么 Laravel 支持这样的方式么? 答案是显然的. 不多废话, 上代码.

1. 新建路径组 Route::group 定义一组路径前缀

Route::group(array('prefix' => 'admincp', 'namespace' => 'Admin'), function () {
    Route::get('/', 'HomeController@index');
    Route::controller('home', 'HomeController');
});

上述代码中映射了 Admin 下的 HomeController.

2. 在控制器目录(controllers)下新建, Admin 目录, 再新建控制器 HomeController. HomeController 有3个要点:
1. namespace 的定义
2. 对控制器的继承, 使用 \Controller
3. 定义 missingMethod 方法, 用于响应路由的自动映射.
代码, 如下:

<?php namespace Admin;
class HomeController extends \Controller {
    public function missingMethod($params=array()) {
        $action = array_shift($params);
        return call_user_func_array([$this, $action], $params);
    }

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index() {
        return 'backend.index';
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return Response
     */
    public function create() {
        return 'backend.create';
    }
}

这样, 就可以在 controllers/Admin 目录下尽情的, 玩耍了. 当然新建控制器的时候, 记得在 Route::group 下建立新的映射.