Laravel框架之路由

  • angus
  • Laravel

    Laravel 让我们书写优雅的代码,为 Web 艺术家创造的 PHP 框架

    Laravel安装

    • 略(网上有教程)

    Laravel使用

    • 安装过后就可以直接使用

    Laravel目录

    ├── app //目录包含应用程序的核心代码。你应用中几乎所有的类都应该放在这里。
    ├── bootstrap //目录包含引导框架并配置自动加载的文件。
    ├── config //目录,顾名思义,包含应用程序所有的配置文件。
    ├── database //目录包含数据填充和迁移文件。你还可以把它作为 SQLite 数据库存放目录。
    ├── public //目录包含了入口文件 index.php,它是进入应用程序的所有请求的入口点。
    ├── resources //目录包含了视图和未编译的资源文件(如 LESS、SASS 或 JavaScript)。
    ├── routes //目录包含了应用的所有路由定义,
    ├── storage //目录包含编译的 Blade 模板、基于文件的会话和文件缓存、以及框架生成的其他文件。
    ├── tests //目录包含自动化测试文件。Laravel 已内置了 PHPUnit 的测试范例供你参考。
    ├── vendor //目录包含了你的 Composer 依赖包。
    更多详细信息参考Laravel中文手册

    Laravel路由

    laravel的路由请求方式有(get,post,put,patch,delete)

    get、post请求

    <?php
    //get请求路由
    Route::get('test', function () {
        return '123456';
    });
    //post请求路由
    Route::post('test2',function(){
      return '123123';
    });
    ?>

    多请求路由

    <?php
    //第一种
    Route::match(['get','post'],'test3',function(){
      return '111111';
    });
    
    //第二种
    Route::any('test4',function(){
      return '2222222';
    });
    //这两种都是多请求路由,但是他们有不同的地方,第一种(match):可以自定义多请求方式。第二种(any):响应所有请求方式*

    路由参数

    <?php
     Route::get('user/{id}',function($id){
       return 'user-id='.$id;
     });
    //这种路由参数必须在‘user’后面添加一个“id”参数,如果不添加就会报错。
    
     Route::get('user/{name?}',function($name='twor'){
       return 'user-name='.$name;
     });
    //这种写法就相当php语法中的`$name?:$name=twor`,这里的‘?’是必须要加上的,如果没有这个‘?’,可以理解为占位符,就像这样
    //Route::get('user/{name}',function(name='twor'){
    //   return 'user-name='.name;
    // });
    //就会报错

    路由参数验证

    <?php
     Route::get('user/{name?}',function($name='twor'){
       return 'user-name='.$name;
     })->where('name','[A-Za-z]+');
    //还支持路由参数的验证,验证规则可以用正则表达式写
    Route::get('user/{id}/{name?}',function($id,$name='twor'){
      return 'user-id='.$id.'-name='.$name;
    })->where(['id'=>'[0-9]+','name'=>'[A-Za-z]+']);

    调用的控制器与模型

      Laravel的控制器的目录在App\Http\Controllers下面,新建控制器就在该目录下面新建xxxController.php就行了。Laravel的模型就就在App目录下面,所以在我们写命名空间时不要写错。

    控制器命名空间:  namespace App\Http\Controllers;
    模型命名空间: namespace App;

    在控制器中调用模型

      我们在App下面新建Test.php,写如下代码:

    <?php
    namespace App;
    use Illuminate\Database\Eloquent\Model;
    class Test extends Model
    {
    
      public static function getTest()
      {
        return 'name is Twor';
      }
    }
    

      同时在App\Http\Controllers下面新建TestController.php写如下代码:

    <?php
    namespace App\Http\Controllers;
    use App\Test;
    class TestController extends Controller
    {
        public function info()
        {
          return Test::getTest();
        }
    }

    在路由中调用控制器

      最后我们需要在路由里面写下我们需要访问的路径

    Route::get('test',['uses'=>'[email protected]']);

    这样我们在地址栏输入http://localhost/http/laravel/public/test就可以直接访问我们的模型了。

    Edit with markdown