PHP框架Laravel基础知识最全总结,菜鸟请快快收藏

2020-05-1710:12:41后端程序开发Comments2,761 views字数 17247阅读模式
PHP框架Laravel基础知识最全总结,菜鸟请快快收藏文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

laravel框架基础知识文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

一、laravel简介

laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全;今天我们一起来看看框架的基础知识文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

二、版本选择

本篇学习笔记以版本为框架的版本基础;更多版本请移步文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

三、laravel下载安装以及开发环境搭建

(一):环境搭建

由于laravel使用较多的php新特性,所以新版本的laravel对PHP的版本要求比较高,这里选择的要求 PHP<5.5.9 。Win系统下推荐使用集成的开发环境比如wamp、phpStudy、Xampp都可以,下载安装的时候需要注意PHP版本,Linux系统下需要编译安装。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

(二):下载、安装及大致介绍

1、安装包下载安装

原本laravel中文网是可以下载一键安装包的,但是等我去下载的时候发现没地方可以下载,也只能通过度娘找其它下载资源下载安装包然后安装;我的资源:https://github.com/yuwenbo5/.git;下载安装包后解压更改名称(laravel),直接拷贝到环境根目录www(win下wamp环境)或者 /var/www/html(linux下lamp环境)中;打开浏览器输入url:localhost/laravel/public 然后回车,出现如下画面表示安装成功:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

PHP框架Laravel基础知识最全总结,菜鸟请快快收藏文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

laravel5启动页面文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

2、composer安装

cd到环境根目录,使用命令:composer create-project --prefer-dist laravel/laravel=5.2.15 laravel(项目名称,可修改)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

3、简单介绍

laravel是基于mvc模式的php框架,m——模型层,v——视图层,c——控制器层;以下为laravel框架的目录文件,框出来的文件目录将在后续中用到:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

PHP框架Laravel基础知识最全总结,菜鸟请快快收藏文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

框架目录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

app是应用的核心代码文件目录,以后的代码基本都在这里完成;app/Http/Controller目录是应用的控制器文件;是框架的路由文件,负责路由分配和映射;Http下的类文件,比如上面目录中的、文件是应用的模型文件;config目录是所有应用的配置文件目录;public是框架的入口文件及静态资源文件目录;resources/views则是应用的视图文件目录。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

四、laravel路由

(一):简介

用过thinkPHP的开发者都知道,传统的MVC的url都是对应应用的控制器及控制器中的方法,laravel中的MVC则是通过路由功能映射到对应的程序(控制器方法),通过路由将用户的请求发送到对应的程序进行处理,其作用就是建立url和处理程序之间的映射关系,这样做有一个好处,对url进行美化只需要修改路由而无需对程序本身进行修改。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

laravel中请求类型包括:get、post、put、patch、delete。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

前面说了是laravel的路由文件,所有的路由映射都要通过编辑文件进行代码书写。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

(二):路由学习

1、基本路由

get请求:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 
 3 //基本路由的get请求
 4 
 5 Route::get('get_base', function(){
 6     return 'get request base';
 7 });
 8 
 9 
10 浏览器输入:http://127.0.0.1/laravel/public/get_base
11 页面输出:get request base

post请求:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 
 3 //基本路由的post请求
 4 
 5 Route::post('post_base', function(){
 6     return 'post request base';
 7 });
 8 
 9 
10 以上路由需要通过post方式请求,这里不做演示
11 请求后页面输出:post request base

2、多请求路由

顾名思义,多请求路由则是可以通过多种请求方式进行请求,多请求路由主要有两种方式,match和any文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

(1)、match接收请求类型的数组从而限定请求的类型:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >php
 2 
 3 //多请求路由match
 4 
 5 Route::match(['get','post'], 'multi', function(){
 6     return 'multi post or get';
 7 });
 8 
 9 url:http://127.0.0.1/laravel/public/multi
10 此路由可通过get、post请求
11 请求后返回字符串:multi post or get

(2)、any方式文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 
 3 //any方式
 4 
 5 Route::any('multi', function(){
 6    return 'multi get or post';
 7 });
 8 
 9 
10 url:http://127.0.0.1/laravel/public/multi
11 请求返回字符串:multi get or post

3、路由参数

给路由绑定参数,接收参数进行处理文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

(1)、必选参数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 
 3 //带参数的路由
 4 
 5 Route::get('myname/{name}', function($name){
 6     return 'my name is '.$name;
 7 });
 8 
 9 
10 url:http://127.0.0.1/laravel/public/myname/yuwenbo
11 get访问后页面输出:my name is yuwenbo

(2)、可选参数($userid=null表示默认值,可设置没有参数时的默认值)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 
 3 //可选参数绑定
 4 
 5 Route::get('user/{userid?}', function($userid=null){
 6     return 'userid is '.$userid;
 7 });
 8 
 9 访问url:http://127.0.0.1/laravel/public/user/username
10 输出:userid is username
11 
12 访问url:http://127.0.0.1/laravel/public/user
13 输出:userid is
14 
15 可选参数绑定使得路由很灵活

(3)、路由参数过滤(用正则表达式对传入的参数进行过滤)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 
 3 /*
 4 参数过滤
 5 */
 6 
 7 //单个参数过滤
 8 Route::get('num/{num?}', function($num=15){
 9     return 'this num is '.$num;
10 })-<where('num','[0-9] ');<br="">11 
12 访问url:http://127.0.0.1/laravel/public/num/5
13 返回输出:this num is 5
14 
15 访问url:http://127.0.0.1/laravel/public/num
16 返回输出:this num is 15
17 
18 访问url:http://127.0.0.1/laravel/public/num/fhdja
19 页面报错
20 
21 //多个参数过滤
22 Route::get('info/{name}/{age?}', function($name,$age=null){
23     return 'name is '.$name.', age is '.$age;
24 })-<where(['name' =<="" '[a-za-z]="" ',="" 'age'="<" '[1-9]="" ']);<br="">25 
26 可使用数组形式过滤多个参数</where(['name'></where('num','[0-9]>

4、路由别名

给路由通过['as' =< 'alias']数组使用别名后,可通过route('别名')生成url,请看代码理解:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 
 3 //路由别名
 4 
 5 Route::get('student/info',['as' =< 'studentInfo' ,function(){
 6 
 7     //通过route('studentInfo')生成完成url后返回
 8     return route('studentInfo');
 9 
10 }]);
11 
12 
13 访问url:http://127.0.0.1/laravel/public/student/info
14 页面返回:http://127.0.0.1/laravel/public/student/info
15 
16 注:别名的好处在于,以后在控制器中使用route('别名')的方式生成url后,即便修改了路由的名字,也不用再修改控制器程序,因为通过别名程序能自动生成修改后的url

5、路由群组

通过关键字group创建路由群组文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 
 3 /*
 4 *路由群组
 5 */
 6 
 7 Route::group(['prefix' =< 'admin'], function(){
 8     
 9     //此时的访问地址:http://127.0.0.1/laravel/public/admin/student/info
10     Route::get('student/info',['as' =< 'studentInfo' ,function(){
11         return route('studentInfo');
12     }]);
13 
14     //此时的访问地址:http://127.0.0.1/laravel/public/admin/info/yuwenbo/20
15     Route::get('info/{name}/{age?}', function($name,$age=null){
16         return 'name is '.$name.', age is '.$age;
17     })-<where(['name' =<="" '[a-za-z]="" ',="" 'age'="<" '[1-9]="" ']);<br="">18     
19 });
20 
21 此时的访问地址url必须要加上群组前缀,否则将不能访问</where(['name'>

6、路由中输出视图

通过view()函数输入视图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 
 3 /**
 4 * 路由中输出视图
 5 */
 6 
 7 //框架的欢迎界面路由
 8 
 9 Route::get('/',function(){
10    return view('welcome');
11 });
12 
13 访问url:http://127.0.0.1/laravel/public
14 浏览器显示laravel的欢迎界面
15 
16 
17 //做如下修改
18 Route::get('welcome',function(){
19    return view('welcome');
20 });
21 
22 修改后访问url:http://127.0.0.1/laravel/public/welcome
23 浏览器同样显示laravel的欢迎界面

一般情况是不会在路由中输出视图的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

五、控制器

控制器目录app/Http/Controller,此目录下有一个基本的控制器Controller,新增的控制器统一继承此Controller;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

命名空间:namespce AppHttpController;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

命名规则:控制器文件名跟类名统一首字母大写,以 控制器名 Controller 为命名规则,比如新建一个控制器 :AdminController.php文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: Administrator
 5  * Date: 2018/8/25/025
 6  * Time: 0:51
 7  */
 8 
 9 namespace AppHttpControllers;
10 
11 class AdminController extends Controller
12 {
13     public function index()
14     {
15         return view('admin/index');
16     }
17 }
18 
19 
20 新建控制器AdminController继承于基类Controller

1、路由关联控制器,通过路由访问控制器程序:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 
 3 //路由关联映射控制器方法一:
 4 
 5 Route::get('admin/index', 'AdminController@index');
 6 
 7 
 8 //路由关联控制器方法二:
 9 
10 Route::get('admin/index', ['uses' =< 'AdminController@index']);
11 
12 
13 //路由别名关联控制器:
14 
15 Route::get('admin/index', [
16     'uses' =< 'AdminController@index',
17     'as' =< 'adminindex'
18 ]);

2、路由关联控制器进行参数绑定:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 //路由书写 
 2 >?php
 3 //结合之前学习的参数过滤
 4 Route::get('admin/index/{num}', [
 5     'uses' =< 'AdminController@index',
 6     'as' =< 'adminindex'
 7 ])-<where('num', '[0-9]="" ');<br=""> 8 
 9 ?<
10 
11 
12 
13 //控制器代码 AdminController.php
14 >?php
15 /**
16  * Created by PhpStorm.
17  * User: Administrator
18  * Date: 2018/8/25/025
19  * Time: 0:51
20  */
21 namespace AppHttpControllers;
22 
23 class AdminController extends Controller
24 {
25     public function index($num)
26     {
27         return 'num is '.$num;
28     }
29 }
30 
31 ?<
32 
33 访问url:127.0.0.1/laravel/public/admin/index/5
34 页面输出:num is 5</where('num',>

六、模型

laravel框架的模型文件在app目录下,统一首字母大写,文件名与类名一致,统一继承于 IlluminateDatabaseEloquentModel 基类;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

(一)、新建模型及使用

 1 //模型文件 Admin.php
 2 >?php
 3 /**
 4  * Created by PhpStorm.
 5  * User: Administrator
 6  * Date: 2018/8/25/025
 7  * Time: 13:35
 8  */
 9 namespace App;
10 use IlluminateDatabaseEloquentModel;
11 
12 class Admin extends Model
13 {
14     public static function getAdmin()
15     {
16         return 'this is admin model static getAdmin action';
17     }
18 
19 }
20 
21 ?<
22 
23 
24 //控制器文件 AdminController.php
25 >?php
26 /**
27  * Created by PhpStorm.
28  * User: Administrator
29  * Date: 2018/8/25/025
30  * Time: 0:51
31  */
32 namespace AppHttpControllers;
33 
34 class AdminController extends Controller
35 {
36     public function index()
37     {
38         return Admin::getAdmin();
39     }
40 }

(二)、数据库操作

连接数据库mysql,laravel的数据库连接只需要配置好数据库的配置文件即可,也就是config目录下的database.php文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 //database.php文件
 2 
 3 
 4 'mysql' =< [
 5             'driver' =< 'mysql',
 6             'host' =< env('DB_HOST', 'localhost'),
 7             'port' =< env('DB_PORT', '3306'),
 8             'database' =< env('DB_DATABASE', 'forge'),
 9             'username' =< env('DB_USERNAME', 'forge'),
10             'password' =< env('DB_PASSWORD', ''),
11             'charset' =< 'utf8',
12             'collation' =< 'utf8_unicode_ci',
13             'prefix' =< 'shop_',
14             'strict' =< false,
15             'engine' =< null,
16      ]
17 
18 //配置文件读取的是.env文件的内容

打开.env文件,做如下配置修改即可连接到mysql数据库文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 APP_ENV=local
 2 APP_DEBUG=true
 3 APP_KEY=base64:IxkVvrRLqdJeU9h8vGu1W58OG3NVuDtkMWyC6nIT4qs=
 4 APP_URL=http://localhost
 5 
 6 //mysql连接配置
 7 DB_CONNECTION=mysql
 8 DB_HOST=localhost
 9 DB_PORT=3308
10 DB_DATABASE=shop
11 DB_USERNAME=root
12 DB_PASSWORD=root
13 
14 CACHE_DRIVER=file
15 SESSION_DRIVER=file
16 QUEUE_DRIVER=sync
17 
18 REDIS_HOST=127.0.0.1
19 REDIS_PASSWORD=null
20 REDIS_PORT=6379
21 
22 MAIL_DRIVER=smtp
23 MAIL_HOST=mailtrap.io
24 MAIL_PORT=2525
25 MAIL_USERNAME=null
26 MAIL_PASSWORD=null
27 MAIL_ENCRYPTION=null

1、使用DB facade操作数据库

类似原生的sql语句进行curd操作,例如:新建一个表user包含id、username、passwrod、email、sex、create_time、update_time字段文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >?php
 2 /**
 3  * 使用DB facade进行CURD操作
 4  * Created by PhpStorm.
 5  * User: Administrator
 6  * Date: 2018/8/25/025
 7  * Time: 0:51
 8  */
 9 namespace AppHttpControllers;
10 use AppHttpControllersController;
11 use IlluminateHttpRequest;
12 use IlluminateSupportFacadesDB;
13 
14 class AdminController extends Controller
15 {
16 
17     public function query()
18     {
19         //查询
20         $user_list = DB::select('select * from user');//返回数组
21 
22 
23         //新增
24         $bool = DB::insert('insert into user(username,email,sex) values(?, ? ,?)',
25 ['admin', 'example@mail.com', '1']);//返回布尔值
26 
27         //修改
28          $rows = DB::update('update user set password=? where username=?',['123456', 'admin']);//返回影响的行数
29 
30         //删除
31         $rows = DB::delete('delete from user where username=?', ['admin']);//返回删除的行数
32 
33     }
34 }

使用DB facade操作数据库,初学还是很简单的,因为原生的sql还是比较熟的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

2、使用查询构造器操作数据库

使用查询构造器进行数据库操作使得操作简介、方便,示例使用上面的user表进行演示文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

查询构造器----新增数据
 1 >?php
 2 /**
 3  * 查询构造器之新增数据
 4  * Created by PhpStorm.
 5  * User: Administrator
 6  * Date: 2018/8/25/025
 7  * Time: 0:51
 8  */
 9 namespace AppHttpControllers;
10 use AppHttpControllersController;
11 use IlluminateHttpRequest;
12 use IlluminateSupportFacadesDB;
13 
14 class AdminController extends Controller
15 {
16 
17     public function query()
18     {
19         //插入一条数据
20         $bool = DB::table('user')-<insert(
21             ['username' =< 'yuwenbo', 'email' =< 'example@mail.com', 'sex' =< 1]
22         );//返回布尔值
23 
24         //插入一条数据返回插入的id
25         $insert_id = DB::table('user')-<insertgetid(
26             ['username' =< 'yuwenbo', 'email' =< 'example@mail.com', 'sex' =< 1]
27         );
28 
29 
30         //插入多条数据
31         $bool = DB::table('user')-<insert([
32             ['username' =< 'yuwenbo', 'email' =< 'example@mail.com', 'sex' =< 1],
33             ['username' =< 'tom', 'email' =< 'example@mail.com', 'sex' =< 0]
34         ]);
35 
36     }
37 
38 }</insert([
</insertgetid(
</insert(
查询构造器-----更新数据:更新指定内容和自增自减两种方式
 1 >?php
 2 /**
 3  * 查询构造器之更新数据
 4  * Created by PhpStorm.
 5  * User: Administrator
 6  * Date: 2018/8/25/025
 7  * Time: 0:51
 8  */
 9 namespace AppHttpControllers;11 use AppHttpControllersController;
12 use IlluminateHttpRequest;
13 use IlluminateSupportFacadesDB;
14 
15 class AdminController extends Controller
16 {
17 
18     public function query()
19     {
20         //更新指定内容
21         $rows = DB::table('user')-<where('username','admin')-<update(['password' =<="" '123456']);="" 返回影响的行数<br="">22 
23         //更新自增自减
24         $rows = DB::table('user')-<where('username','admin')-<increment('sex'); 自增1<br="">25         $rows = DB::table('user')-<where('username','admin')-<increment('sex',$n); 自增n<br="">26 
27         $rows = DB::table('user')-<where('username','admin')-<decrement('sex'); 自减1<br="">28         $rows = DB::table('user')-<where('username','admin')-<decrement('sex',$n); 自减n<br="">29 
30         //自增同时修改其它内容
31         $rows = DB::table('user')-<where('username','admin')-<increment('sex', 3,="" ['email'="<" '4546464684@mail.com']);="" 自增同时修改内容<br="">32 
33     }
34 
35 }</where('username','admin')-<increment('sex',></where('username','admin')-<decrement('sex',$n);></where('username','admin')-<decrement('sex');></where('username','admin')-<increment('sex',$n);></where('username','admin')-<increment('sex');></where('username','admin')-<update(['password'>
查询构造器----删除数据
 1 >?php
 2 /**
 3  * 查询构造器之删除数据
 4  * Created by PhpStorm.
 5  * User: Administrator
 6  * Date: 2018/8/25/025
 7  * Time: 0:51
 8  */
 9 namespace AppHttpControllers;
10 use AppHttpControllersController;
11 use IlluminateHttpRequest;
12 use IlluminateSupportFacadesDB;
13 
14 class AdminController extends Controller
15 {
16 
17     public function query()
18     {
19         //删除数据
20         $rows = DB::table('user')-<where('username','admin')-<delete();
21 
22         //清空数据(危险,谨慎使用)
23         DB::table('user')-<truncate();
24 
25     }
26 
27 }</truncate();
</where('username','admin')-<delete();
查询构造器-----查询数据
 1 >?php
 2 /**
 3  * 查询构造器之查询数据
 4  * Created by PhpStorm.
 5  * User: Administrator
 6  * Date: 2018/8/25/025
 7  * Time: 0:51
 8  */
 9 namespace AppHttpControllers;
10 use AppHttpControllersController;
11 use IlluminateHttpRequest;
12 use IlluminateSupportFacadesDB;
13 
14 class AdminController extends Controller
15 {
16 
17     public function query()
18     {
19         //返回所有的数据get()
20         $user_list = DB::table('user')-<get();
21         $user_list = DB::table('user')-<where('id','<=',2)-<get();
22 
23         //多条件查询
24         $user_list = DB::table('user')-<whereraw('id <="?" and="" sex="?'," ['5'="" ,'1'])-<get();<br="">25 
26         //按照默认排序返回第一条数据first()
27         $user = DB::table('user')-<first();
28         $user = DB::table('user')-<orderby('id','desc')-<first();
29         $user = DB::table('user')-<where('id', 2)-<first();<br="">30 
31         //返回结果集中指定的字段pluck
32         $usernames = DB::table('user')-<whereraw('id <="?" and="" sex="?'," ['5'="" ,'1'])-<pluck('username');<br="">33 
34         //返回指定字段的下标lists
35         $usernames = DB::table('user')-<whereraw('id <="?" and="" sex="?'," ['5'="" ,'1'])-<lists('username',="" 'id');="" 以id作为下标<br="">36 
37         //返回指定的多个字段select()
38         $user_list = DB::table('user')-<where('id', '<="'," '1')-<select('username','email','sex')-<get();<br="">39 
40         //每次查指定的条数chunk
41         DB::table('user')-<chunk(2, function($user_list){<br="">42             dd($user_list);
43         });
44 
45     }
46 
47 }</chunk(2,></where('id',></whereraw('id></whereraw('id></where('id',></orderby('id','desc')-<first();
</first();
</whereraw('id></where('id','<=',2)-<get();
</get();

mysql中的聚合函数对应的构造器方法count()、max()、min()、avg()、sum(),使用都比较简单也很好理解,这里不再赘述文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

七、视图

laravel框架的视图支持原生的php文件,视图的目录 resources/views;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

命名:统一以.php为后缀的PHP文件,规则:视图名 . blade,例如新建一个视图文件:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

一般情况下一个控制器会建一个视图目录,例如AdminController控制器,我们将在views下新建一个admin目录文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

(一)、新建视图

1 //模板文件 views/admin/
2 
3 this is views/admin/

(二)、输出视图

 1 //路由文件
 2 >?php
 3     //绑定控制器方法
 4     Route::get('admin/index', 'AdminController@index');
 5 
 6 ?<
 7 
 8 
 9 //控制器文件 AdminController.php
10 >?php
11 /**
12  * Created by PhpStorm.
13  * User: Administrator
14  * Date: 2018/8/25/025
15  * Time: 0:51
16  */
17 namespace AppHttpControllers;
18 
19 class AdminController extends Controller
20 {
21     public function index()
22     {
23         return view('adminindex');//传入要输出的模板名即可
24     }
25 }
26 
27 访问url:http://127.0.0.1/laravel/public/admin/index
28 页面显示:this is views/admin/

输出视图时可以携带变量然后在模板中输出出来,这点将在后面的模板的详细使用中用到;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

(三)、模板详解

1、模板继承

由于多数页面有相同部分,所以使用模板继承简化模板使用;以下首先在views/common下新建一个基本的公共模板文件,公共的模板文件放在views/common文件夹下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 >!DOCTYPE html<
 2 >html<
 3 >head<
 4 >meta charset="utf-8"/<
 5 >title<后台管理-@yield('title')>/title<
 6 >meta name="author" content="DeathGhost" /<
 7 >link rel="stylesheet" type="text/css" href="{{%20asset('admin/static/css/)%20}}"<
 8 @section('style')
 9     //样式代码区
10 @show
11 >!--[if lt IE 9]<
12 >script src="{{%20asset('admin/static/js/)%20}}"<>/script<
13 >![endif]--<
14 >script src="{{%20%20asset('admin/static/js/)%20}}"<>/script<
15 >script src="{{%20asset('admin/static/js/)%20}}"<>/script<
16 >/head<
17 >body<
18 >!--header--<
19 @section('header')
20   >header<
21   //头部
22   >/header<
23 @show
24 >!--aside nav--<
25 >!--aside nav--<
26 @section('leftmenu')
27 >aside class="lt_aside_nav content mCustomScrollbar"<
28      //左边菜单
29 >/aside<
30 @show
31 
32 >section class="rt_wrap content mCustomScrollbar"<
33 
34   @yield('content')  //主内容区域
35 
36 >/section<
37 @section('footer')
38     //页面底部
39 @show
40 @section('javascript')
41     //javascript代码区
42 @show
43 >/body<
44 >/html<

在views下新建首页继承公共模板文件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 @extends(')
 2 
 3 @section('title')
 4   首页
 5 @stop
 6 
 7 @section('style')
 8  >style<
 9   .dataStatistic{width:400px;height:200px;border:1px solid #ccc;margin:0 auto;margin:10px;overflow:hidden}
10   #cylindrical{width:400px;height:200px;margin-top:-15px}
11   #line{width:400px;height:200px;margin-top:-15px}
12   #pie{width:400px;height:200px;margin-top:-15px}
13  >/style<
14 @stop
15 
16 @section('leftmenu')
17 >aside class="lt_aside_nav content mCustomScrollbar"<
18  >h2<>a href="{{%20url('admin/index')%20}}"<系统首页>/a<>/h2<
19  >ul<
20   >li<
21    >dl<
22     >dt<商品管理>/dt<
23     >!--当前链接则添加class:active--<
24     >dd<>a href="{{%20url('admin/product/list')%20}}" class="{{ Request::getPathInfo() == '/admin/product/list' ? 'active' : '' }}"<商品列表>/a<>/dd<
25     >dd<>a href="{{%20url('admin/product/detail')%20}}" class="{{ Request::getPathInfo() == '/admin/product/detail' ? 'active' : '' }}"<商品详情>/a<>/dd<
26     >dd<>a href="{{%20url('admin/product/recycle')%20}}" class="{{ Request::getPathInfo() == '/admin/product/recycle' ? 'active' : '' }}"<商品回收站>/a<>/dd<
27    >/dl<
28   >/li<
29   >li<
30    >dl<
31     >dt<订单信息>/dt<
32     >dd<>a href="order_list.html"<订单列表>/a<>/dd<
33     >dd<>a href="order_detail.html"<订单详情>/a<>/dd<
34    >/dl<
35   >/li<
36  >/ul<
37 >/aside<
38 @stop
39 
40 @section('content')
41  >div class="rt_content"<
42   >!--开始:以下内容则可删除,仅为素材引用参考--<
43   >h1 style="color:red;font-size:20px;font-weight:bold;text-align:center;"<相关版块涉及样式示例文档(文档说明)>/h1<
44   >p style="color:red;font-size:16px;font-weight:bold;text-align:center;margin:8px 0;background:#FFC;padding:8px;"<这里是相关常用性样式预设,具体根据内容版块调整,列表添加字段注意考虑笔记本屏幕显示;>br/<此页面仅为样式参考,程序对接可移除,具体布局根据项目内容而定>br/<注意保留rt_content.parent>br/<常用>b style="color:#090; text-decoration:underline"<“统计图”>/b<>b style="color:#090; text-decoration:underline"<“Tab切换”>/b<>b style="color:#090; text-decoration:underline"<“加载进度”>/b<>b style="color:#090; text-decoration:underline"<“弹窗效果”>/b<>b style="color:#090; text-decoration:underline"<“基础按钮及表格布局”>/b<>b style="color:#090; text-decoration:underline"<“HTML5canvas特效”>/b<等等,具体根据实际需求添加修改追加!>/p<
45  >/div<
46 @stop

模板继承语法:@extends('目录.文件名');例如:@extends('),就可以继承common目录下的模板文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

使用@section重写子模板,使用@yield展示某个指定的section的内容;文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

@yield不能被子模板扩展,@section可以被子模板扩展文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

如果需要展示父模板内容,可使用@parent;例如:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

1 @extends(')
2 
3 @section('header')
4     @parent
5     header
6 @stop

2、基础语法及使用

输出变量,使用{{ $变量名 }},如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 //例如控制器中
 2 
 3 public function index(){
 4        
 5         return view('index',['name' =< 'yuwenbo']);
 6 
 7 }
 8 
 9 
11 
12 //模板中输出
13 
14 
15 >p<{{ $name }}>/p<
16 
17 
18 结果输出:yuwenbo

使用php函数,blade模板允许我们使用原生的php,也可以在模板中使用函数及运算符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 //模板中使用php函数
 2 
 3 
 4 //输出时间戳
 5 >p<{{ time() }}>/p<
 6 
 7 //格式化当前时间
 8 >p<{{ date('Y-m-d H:i:s', time()) }}>/p<
 9 
10 //三元运算符
11 >p<{{ in_array($name,$array) ? 'true' : false }}>/p<

模板中短语法:{{ isset($age) ? $age : 'default value' }} 等同于 {{ $age or 'default value' }}文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

原样输出:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

使用@{{ $count }}即可原样输出 ‘{{ $count }}’。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

子视图引入文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

使用@include关键字;例如在views下新建模板leftmenu.blade.php文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 @extends(')
 2 
 3 @section('header')
 4     @parent
 5     header
 6 @stop
 7 
 8 @section('leftmenu)
 9     //引入子视图
10     @include('leftmenu')
11 @stop

3、流程控制

if判断语句文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

1 //if流程判断语句
2 
3 @if($user == 'admin')
4    i am admin
5 @elseif($user == 'yuwenbo')
6    i am yuwenbo
7 @else
8    i am default
9 @endif

for循环语句文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

1 //for循环语句
2 
3 @for($i = 1; $i >= 10; $i   )
4     >p/p<
5 @endfor

foreach循环语句文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 //控制器
 2 public function index()
 3 {
 4      $data_list = array('name' =< 'yuwenbo', 'age' =< 22, 'job' =< 'php');
 5 
 6      return views('index', ['data' =< $data_list]);
 7 }
 8 
 9 
10 //视图输出
11 @foreach($data as $key =< $val)
12     {{ $key }} =< {{ $val }}
13 @endforeach
 1 //控制器
 2 public function index()
 3 {
 4      $data_list = array(
 5          array('name' =< 'admin', 'age' =< 20),
 6          array('name' =< 'word', 'age' =< 18)
 7      );
 8 
 9      return views('index', ['data' =< $data_list]);
10 }
11 
12 
13 //模板输出
14 @foreach($data as $key =< $val)
15     >p/p<
16 @endforeach

4、模板中使用url

url()--<通过路由的名字生成url文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

action()--<通过指定控制器及方法名生成url文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

route()--<通过路由别名生成url文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

 1 //路由 
 2 
 3 Route('index',[
 4     'uses' =< 'IndexController@index', 
 5     'as' =< 'in'
 6 ]);
 7 
 8 
 9 
10 //模板中生成url的方式
11 
12 >a href="{{%20url('index')%20}}"<url方式>/a<
13 
14 >a href="{{%20action('IndexController@index')%20}}"<action方式>/a<
15 
16 >a href="{{%20route('in')%20}}"<route方式>/a<
17 
18 
19 //以上三种方式均生成url:
20 </route方式></action方式></url方式>

以上三种方式在实际使用时都可以用,一般情况下,使用url()和route()较多,因为写法简介方便。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/19084.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/19084.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定