返回首页 - Notes - 2014

Laravel 入门


新建项目

composer create-project laravel/laravel --prefer-dist project_namelaravel new project_name

composerlaravelWindows 下的安装方法:

  1. 访问 https://getcomposer.org/Composer-Setup.exe 下载到 Composer 安装包进行安装
  2. Composer 安装位置提取出 composer.phar 文件,然后卸载掉刚刚安装的 Composer
  3. 访问 http://laravel.com/laravel.phar 下载到 laravel.phar 文件
  4. composer.pharlaravel.phar 复制到 php.exe 所在目录下,如:D:/PHP
  5. D:/PHP 路径加入环境变量
  6. D:/PHP 下新建 composer.batlaravel.bat 文件,内容分别如下:
    @ECHO OFF
    SET BIN_TARGET=%~dp0/composer.phar
    php "%BIN_TARGET%" %*
    
    @ECHO OFF
    SET BIN_TARGET=%~dp0/laravel.phar
    php "%BIN_TARGET%" %*
    
  7. 执行 composer self-update 更新 Composer 到最新版本
  8. 现在 composerlaravel 命令应该就可以正常使用了

Linux 下安装更简单

  1. 按官网指导下载到 composer.pharlaravel.phar 文件
  2. mkdir ~/apps:在家目录下新建一个 apps 目录
  3. mv *.phar ~/apps:将这两个 .phar 文件移到刚建的目录
  4. cd ~/apps && sudo chmod a+x *.phar:加可执行权限
  5. mv composer.phar composer && mv laravel.phar laravel:将两文件改名,去掉文件后缀
  6. ~/.bashrc 中新加一行:
    export PATH="$HOME/apps:$PATH"
    
  7. source ~/.bashrc
  8. 如此 composerlaravel 命令就可以使用了

更改站点入口

Laravelindex.php 文件位于 public 目录下,对虚拟主机来说是不方便的,所以需要在根目录放置一个 .htaccess 将请求转到 public 目录去:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

路由

路由定义位置在 app/routes.php 文件,支持五种路由方法,采用回调函数的形式工作:

相当重要的一点:路由是区分大小写的,/hello/Hello 是不同的路由

可以用 {} 对路由进行命名,如:

Route::get('/hello/{name}', function ($name) {
    return "Hello, {$name}";
});

还可以在命名路由后加一个 ? 号,表示该路由可有可无,如:

Route::get('/hello/{name?}', function ($name) {
    return "Hello, {$name}";
});
// 但需要注意的是,如果 $name 没有赋默认值,则访问 /hello 路径会出错

可以通过 View::make 使用模版,如:

Route::get('/hello/{name?}', function ($name = 'Laravel') {
    $data['name'] = $name;
    return View::make('hello', $data);
});
// 上述代码会用 $data 数组去填充 app/views 目录下的 hello.php 文件

其他用法


过滤器

过滤器对应的文件为 app/filters.php,三种主要的过滤器如下

可以在 app/routes.php 里面像下面这么写:

Route::get('/hello/{name}', array(
    'before' => 'check_name',   // 开始响应前执行的过滤器
    'after'  => 'finish_name',  // 完成响应后执行的过滤器
    function () {
        return "Hello, {$name}";
    }
));

可以用管道或数组同时指定多个过滤器:

过滤器可以接收到两个或三个参数:

指定过滤器时可以用 : 向过滤器传递附加参数,参数可以传递多个,用逗号分隔

  1. 传递参数:'before' => 'filter_name:ParamTest1,ParamTest2'
  2. 接收参数:
    Route::filter('filter_name', function ($route, $request, $param1, $param2) {
        // 路由对象,请求对象,附加参数1,附加参数2
    });
    

使用 Route::when() 可以进行通配符过滤,如:Route::when('/hello/*', 'filter_name')


使用类代替回调函数

  1. 首先在 app 目录下新建一个 filters 文件夹
  2. app/filters 目录下新建 filters 类,如 Test.php
    <?php
    
    class TestFilter {
        public function filter ($route, $request, $response) {
            // var_dump("I'm here");
        }
    }
    
  3. app/routes.php 文件中如下面这样书写:
    // 引入TestFilter,并起别名test
    Route::filter('test', 'TestFilter');
    
    Route::get('/hello/{name}', array(
        'after' => 'test',  // 使用该过滤器
        function ($name = 'Laravel') {
            return View::make('hello', array('name' => $name));
        }
    ));
    
  4. 打开项目根目录下的 composer.json 文件,在 classmap 配置项中附加一行 "app/filters"
  5. 执行一次 composer dump-autoload

date : 2014-02-19、2014-04-08、2014-04-24、2014-04-25、2014-04-29