道者编程

laravel5.8(一)结构,路由等基本知识

一:下载安装:

我本机项目在E:\www,,进入该目录,用composer来安装

composer create-project --prefer-dist laravel/laravel=5.8 test
这样就项目就安装好了

二:文件结构:

app目录

应用核心目录,注意不是框架的核心代码

 Console目录

 命令行接口名称,基于强大的Symfony Console 组件驱动,artisan命令,控制器,模型,中间件等都可以通过命令生成。

 Exceptions目录

 异常处理类

 Http目录

 控制器,Middleware:中间件等

 Providers

 服务提供者,其实就是注册一些东西,包括注册 Service Container,事件监听器,过滤器,甚至是路由等

 User.php

 这个是官方的一个默认模型,也可以新建模型目录

 bootstrap目录

 app.php

 用于框架启动自动载入配置文件

 cache

 包括一些缓存文件,提升性能

 config目录

 应用的所有配置文件

 database 目录

 数据库迁移和填充文件

 public 目录

 包括入口文件index.php,和静态资源文件,nginx、apache指向这里

 resources 目录

 目录包含了视图和未编译的资源文件(如 LESS、SASS 或 JavaScript)。以及语言文件

 routes 目录
 包括4个默认路由

 web.php

 提供会话状态、CSRF 防护和 cookie 加密

 api.php

 api接口路由,频率限制,令牌认证等

 channels.php

 广播路由

 console.php 

 以闭包的形式自定义 artisan 命令

 storage 目录
 编译后的 Blade 模   板,缓存等等文件

 app

 存储应用生成的任何文件

 framework

 存储框架生成的文件和缓存

 logs

 包含应用的日志文件

 app/public

 存储用户生成的文件,比如上传的图片等
 php artisan storage:link,软连接命令

 tests目录

 自动化测试

 vendor

 所有的依赖文件,laravel框架核心代码也在这里

 .env

 配置文件,包括数据库配置,reids配置,环境配置等

 .env.example

 和上面一样,类似于php.ini-production改成php.ini

 artisan

 命令行生成工具

 composer.json

 composer的配置文件,声明包,以及之间的关系,也可以引入自定义的包

 三:路由

注意:请求根目录/ (http://www.xxx.com/public/),会请求public/index.php,请求其他路由地址时,会把你的请求定位到:http://www.xxx.com/index.php 里面,故而报404,所以nginx需要添加一行:

 location / {
 	try_files $uri $uri/ /index.php?$query_string;
 }

或者

把 try_files $uri $uri/ /index.php?$query_string; 添加到/public/nginx.htaccess中,然后nginx中include加载


1:默认路由,位置:routes/web.php

Route::get('/', function () {
    return view('welcome'); //view调用视图,resources\views\welcome.blade.php
});

一般应用都是使用该路由文件,基本路由:URL+闭包,大部分路由一般是找控制器:

Route::get('/user', 'UserController@index');//控制器和方法用@分割

2:请求方式:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
 3:多个请求方式

Route::match(['get', 'post'], '/', function () {
    // get和post请求
}); 

Route::any('foo', function () {
    // 所有请求方式
});

 4:路由参数

Route::get('user/{id}', function ($id) {
    return $id; //回调获取id参数
});
 
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    //多个参数
});

路由的参数通常都会被放在 {} 内,并且参数名只能为字母,同时路由参数不能包含 - 符号,如果需要可以用下划线 (_) 代替。路由参数会按顺序依次被注入到路由回调或者控制器中,而不受回调或者控制器的参数名称的影响。

5:可选参数,用?标记

Route::get('user/{name?}', function ($name = 'John') { name是可选的,回调这里,如果没有name,那么默认John
    return $name;
});

6:视图路由

Route::view('/welcome', 'welcome', ['name' => 'Taylor']);
//第一个参数是访问的URL,第二个参数是视图名称路径,第三个参数传入数据,非必填
7:正则表达式路由,不建议使用,可以在程序中去判断。

8:重定向路由

Route::redirect('/here', '/welcome2',301);
//第一个参数路由URL,第二个参数重定向URL,第三个参数如果没有,默认返回302

9:路由别名,加name方法

Route::get('user/{name?}', function ($name = 'John') {
    return $name;
})->name('users');

10:路由分组:Route::group,语法:加一个前缀:prefix

Route::group(['prefix' => 'admin'], function () { //定义后台路由分组admin,里面写法和上面一样。
    Route::get('edit', function () {
        return $name;
    });
    Route::get('add', function () {
        return $name;
    });
});

11:路由中间件:Route::group,语法:加一个前缀:middleware,这东西一般用于验证,有没有登录啊,权限啊这些。

Route::group(['middleware' => 'auth'], function (){
    Route::get('/user', function (){

    });

    Route::get('/user/profile', function (){
        
    });
});



最新评论:
1楼 广东省深圳市 电信 发表于 2020-04-21 17:54:26
牛牛牛
共有 1 条记录  首页 上一页 下一页 尾页 1
我要评论:

看不清楚