一、laravel简介

laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全;以下是本人在学习过程中记录的laravel比较基础的资料,权当学习笔记,请大神们多多指教

二、版本选择

本篇学习笔记以laravel5.2.15版本为框架的版本基础;更多版本请移步https://www.golaravel.com/

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

(一):环境搭建

  由于laravel使用较多的php新特性,所以新版本的laravel对PHP的版本要求比较高,这里选择的laravel5.2.15要求 PHP>5.5.9+ 。Win系统下推荐使用集成的开发环境比如wamp、phpStudy、Xampp都可以,下载安装的时候需要注意PHP版本,Linux系统下需要编译安装,这里推荐一篇博客https://www.linuxidc.com/Linux/2016-10/136327.htm(ubuntu下lamp开发环境搭建)。本篇学习笔记也是基于lamp环境下

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

  1、安装包下载安装

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

  2、composer安装

  cd到环境根目录,使用命令:composer create-project --prefer-dist laravel/laravel=5.2.15  laravel(项目名称,可修改)

  3、简单介绍

  laravel是基于mvc模式的php框架,m——模型层,v——视图层,c——控制器层;以下为laravel框架的目录文件,框出来的文件目录将在后续中用到:

  

  app是应用的核心代码文件目录,以后的代码基本都在这里完成;app/Http/Controller目录是应用的控制器文件;routes.php是框架的路由文件,负责路由分配和映射;Http下的类文件,比如上面目录中的User.php、Menu.php文件是应用的模型文件;config目录是所有应用的配置文件目录;public是框架的入口文件及静态资源文件目录;resources/views则是应用的视图文件目录。

四、laravel路由

  (一):简介

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

  laravel中请求类型包括:get、post、put、patch、delete。

  前面说了route.php是laravel的路由文件,所有的路由映射都要通过编辑route.php文件进行代码书写。

  (二):路由学习

    1、基本路由

    get请求:

 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请求:

 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

    (1)、match接收请求类型的数组从而限定请求的类型:

 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方式

 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、路由参数

    给路由绑定参数,接收参数进行处理

    (1)、必选参数

 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表示默认值,可设置没有参数时的默认值)

 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)、路由参数过滤(用正则表达式对传入的参数进行过滤)

 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]+');
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]+']);
25
26 可使用数组形式过滤多个参数

    4、路由别名

    给路由通过['as' => 'alias']数组使用别名后,可通过route('别名')生成url,请看代码理解:

 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创建路由群组

 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]+']);
18
19 });
20
21 此时的访问地址url必须要加上群组前缀,否则将不能访问

    6、路由中输出视图

    通过view()函数输入视图

 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的欢迎界面

    一般情况是不会在路由中输出视图的。

五、控制器

  控制器目录app/Http/Controller,此目录下有一个基本的控制器Controller,新增的控制器统一继承此Controller;

  命名空间:namespce  App\Http\Controller;

  命名规则:控制器文件名跟类名统一首字母大写,以 控制器名+Controller 为命名规则,比如新建一个控制器 :AdminController.php

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: Administrator
 5  * Date: 2018/8/25/025
 6  * Time: 0:51
 7  */
 8
 9 namespace App\Http\Controllers;
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、路由关联控制器,通过路由访问控制器程序:

 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、路由关联控制器进行参数绑定:

 1 //路由书写 route.php
 2 <?php
 3 //结合之前学习的参数过滤
 4 Route::get('admin/index/{num}', [
 5     'uses' => 'AdminController@index',
 6     'as' => 'adminindex'
 7 ])->where('num', '[0-9]+');
 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 App\Http\Controllers;
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

六、模型

  laravel框架的模型文件在app目录下,统一首字母大写,文件名与类名一致,统一继承于 Illuminate\Database\Eloquent\Model 基类;

  (一)、新建模型及使用

 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 Illuminate\Database\Eloquent\Model;
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 App\Http\Controllers;
33
34 class AdminController extends Controller
35 {
36     public function index()
37     {
38         return Admin::getAdmin();
39     }
40 }

  (二)、数据库操作

  连接数据库mysql,laravel的数据库连接只需要配置好数据库的配置文件即可,也就是config目录下的database.php

 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数据库

 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字段

 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 App\Http\Controllers;
10 use App\Http\Controllers\Controller;
11 use Illuminate\Http\Request;
12 use Illuminate\Support\Facades\DB;
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还是比较熟的。

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

   使用查询构造器进行数据库操作使得操作简介、方便,示例使用上面的user表进行演示

    查询构造器----新增数据
 1 <?php
 2 /**
 3  * 查询构造器之新增数据
 4  * Created by PhpStorm.
 5  * User: Administrator
 6  * Date: 2018/8/25/025
 7  * Time: 0:51
 8  */
 9 namespace App\Http\Controllers;
10 use App\Http\Controllers\Controller;
11 use Illuminate\Http\Request;
12 use Illuminate\Support\Facades\DB;
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 }

    查询构造器-----更新数据:更新指定内容和自增自减两种方式
 1 <?php
 2 /**
 3  * 查询构造器之更新数据
 4  * Created by PhpStorm.
 5  * User: Administrator
 6  * Date: 2018/8/25/025
 7  * Time: 0:51
 8  */
 9 namespace App\Http\Controllers;11 use App\Http\Controllers\Controller;
12 use Illuminate\Http\Request;
13 use Illuminate\Support\Facades\DB;
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']);//返回影响的行数
22
23         //更新自增自减
24         $rows = DB::table('user')->where('username','admin')->increment('sex');//自增1
25         $rows = DB::table('user')->where('username','admin')->increment('sex',$n);//自增n
26
27         $rows = DB::table('user')->where('username','admin')->decrement('sex');//自减1
28         $rows = DB::table('user')->where('username','admin')->decrement('sex',$n);//自减n
29
30         //自增同时修改其它内容
31         $rows = DB::table('user')->where('username','admin')->increment('sex', 3, ['email' => '4546464684@mail.com']);//自增同时修改内容
32
33     }
34
35 }

    查询构造器----删除数据
 1 <?php
 2 /**
 3  * 查询构造器之删除数据
 4  * Created by PhpStorm.
 5  * User: Administrator
 6  * Date: 2018/8/25/025
 7  * Time: 0:51
 8  */
 9 namespace App\Http\Controllers;
10 use App\Http\Controllers\Controller;
11 use Illuminate\Http\Request;
12 use Illuminate\Support\Facades\DB;
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 }

    查询构造器-----查询数据
 1 <?php
 2 /**
 3  * 查询构造器之查询数据
 4  * Created by PhpStorm.
 5  * User: Administrator
 6  * Date: 2018/8/25/025
 7  * Time: 0:51
 8  */
 9 namespace App\Http\Controllers;
10 use App\Http\Controllers\Controller;
11 use Illuminate\Http\Request;
12 use Illuminate\Support\Facades\DB;
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();
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();
30
31         //返回结果集中指定的字段pluck
32         $usernames = DB::table('user')->whereRaw('id >= ? and sex = ?', ['5' ,'1'])->pluck('username');
33
34         //返回指定字段的下标lists
35         $usernames = DB::table('user')->whereRaw('id >= ? and sex = ?', ['5' ,'1'])->lists('username', 'id');//以id作为下标
36
37         //返回指定的多个字段select()
38         $user_list = DB::table('user')->where('id', '>=', '1')->select('username','email','sex')->get();
39
40         //每次查指定的条数chunk
41         DB::table('user')->chunk(2, function($user_list){
42             dd($user_list);
43         });
44
45     }
46
47 }

  mysql中的聚合函数对应的构造器方法count()、max()、min()、avg()、sum(),使用都比较简单也很好理解,这里不再赘述

七、视图

  laravel框架的视图支持原生的php文件,视图的目录 resources/views;

  命名:统一以.php为后缀的PHP文件,规则:视图名+.+blade,例如新建一个视图文件:index.blade.php

  一般情况下一个控制器会建一个视图目录,例如AdminController控制器,我们将在views下新建一个admin目录

 (一)、新建视图

1 //模板文件 views/admin/index.blade.php
2
3 this is views/admin/index.blade

 (二)、输出视图

 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 App\Http\Controllers;
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/index.blade

 输出视图时可以携带变量然后在模板中输出出来,这点将在后面的模板的详细使用中用到;

 (三)、模板详解

  1、模板继承

  由于多数页面有相同部分,所以使用模板继承简化模板使用;以下首先在views/common下新建一个基本的公共模板文件base.blade.php,公共的模板文件放在views/common文件夹下

  

 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="{{ asset('admin/static/css/style.css') }}">
 8 @section('style')
 9     //样式代码区
10 @show
11 <!--[if lt IE 9]>
12 <script src="{{ asset('admin/static/js/html5.js') }}"></script>
13 <![endif]-->
14 <script src="{{  asset('admin/static/js/jquery.js') }}"></script>
15 <script src="{{ asset('admin/static/js/jquery.mCustomScrollbar.concat.min.js') }}"></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>

base.blade.php

  在views下新建首页index.blade.php继承公共模板文件

 1 @extends('common.base')
 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="{{ url('admin/index') }}">系统首页</a></h2>
19  <ul>
20   <li>
21    <dl>
22     <dt>商品管理</dt>
23     <!--当前链接则添加class:active-->
24     <dd><a href="{{ url('admin/product/list') }}" class="{{ Request::getPathInfo() == '/admin/product/list' ? 'active' : '' }}">商品列表</a></dd>
25     <dd><a href="{{ url('admin/product/detail') }}" class="{{ Request::getPathInfo() == '/admin/product/detail' ? 'active' : '' }}">商品详情</a></dd>
26     <dd><a href="{{ url('admin/product/recycle') }}" 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

index.blade.php

  模板继承语法:@extends('目录.文件名');例如:@extends('common.base'),就可以继承common目录下的base.blade.php模板

  使用@section重写子模板,使用@yield展示某个指定的section的内容;

  @yield不能被子模板扩展,@section可以被子模板扩展

  如果需要展示父模板内容,可使用@parent;例如:

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

  2、基础语法及使用

  输出变量,使用{{ $变量名 }},如下所示:

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

  

  使用php函数,blade模板允许我们使用原生的php,也可以在模板中使用函数及运算符

 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' }}

  原样输出:

  使用@{{ $count }}即可原样输出 ‘{{ $count }}’。

  子视图引入

  使用@include关键字;例如在views下新建模板leftmenu.blade.php

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

  3、流程控制

  if判断语句

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循环语句

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

  foreach循环语句

 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>name is {{ $val->name }}, age is {{ $val->age }}</p>
16 @endforeach

  4、模板中使用url

  url()-->通过路由的名字生成url

  action()-->通过指定控制器及方法名生成url

  route()-->通过路由别名生成url

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

  以上三种方式在实际使用时都可以用,一般情况下,使用url()和route()较多,因为写法简介方便。

  

  注:本学习笔记,均根据慕课网laravel框架基础视频讲解所记录,都是一些基础的框架用法,适合laravel初学者;不足之处,请指教

转载于:https://www.cnblogs.com/yuwenbo/p/9623951.html

laravel框架基础知识相关推荐

  1. laravel框架基础知识总结

    一.laravel简介 laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全:以下是本人在学习过程中记录的laravel比较基础的资料,权当学习笔记,请大神们多多指教 ...

  2. Spring框架基础知识

    本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , ...

  3. Django框架基础知识汇总(有项目版)

    Web框架本质## web系统概念 1. Http,无状态,短连接 2. 浏览器(socket客户端).网站(socket服务端) web框架本质 import socket def handle_r ...

  4. 2022年Java应届生面试之Spring框架基础知识

    前言:工作的原因,最近没有及时更新相关系列.很抱歉!在复习Spring框架的同时也别忘了j2ee的相关知识理论wo~ 大家好!我是JAVA 中的Spring框架,我是一个开源的容器性质的轻量级框架. ...

  5. 后端 学习 前端 Vue 框架基础知识

    文章目录 一.Vue 基础语法学习 1.Vue 语法指令 2.Vue 实例属性 (1)el (2)data (3)methods (4)computed 3.事件修饰符 4.按键修饰符 5.Vue实例 ...

  6. Spring5框架基础知识小结

    文章目录 1. 链接 2. Spring概述 2.1 Sprig框架概述 2.2 入门案例 3. IOC容器 3.1 IOC和DI 3.2IOC容器在Spring中的实现 3.3举例说明IOC为什么可 ...

  7. Hadoop框架--基础知识

    如果有天堂,天堂应该是图书馆的模样. –博尔赫斯 (不那么冷就更好了) 主要内容:Hadoop.hive.HBASE.zookeeper.MySQL.sqoop.kafka(有时间补).日志 一.什么 ...

  8. ThinkPhp框架基础知识

    ThinkPhp是一个采用MVC框架,免费开源.快捷简单的OOP轻量级PHP框架. MVC分三个部分: Model 模型层:模型层是应用程序的核心,可以是一个实体或一种业务逻辑,在应用程序中有更好的重 ...

  9. laravel 框架基础 学习整理

    一. Laravel 数据库迁移 创建迁移文件(在database/migrations目录) php artian make:migration create_table_articles --cr ...

  10. 三分钟轻松了解Spring框架基础知识

    做为一个合格的Java开发人员,你一定听说过Spring框架,虽然会应用,但却未必能够深入理解框架的原理,只是像其它人一样,泛泛的只是停留在理解的层面.小编会带着大家一步步了解Spring框架. st ...

最新文章

  1. stm32延时us寄存器_STM32延时函数的四种方法
  2. 汇编 --- EXE文件 的程序的加载过程
  3. 小程序 国际化_在国际化您的应用程序时忘记的一件事
  4. uni-app小程序 点击页面滚动到指定位置
  5. Python zip() 函数--多个迭代器取元素组合成一个新的迭代器
  6. 再看到一则有关Anders的……
  7. Liunx CentOS6编译安装LAMP
  8. 你可能不知道Flutter到底有多火
  9. 微软将于下周展示平板电脑操作系统
  10. 仿IOS通讯录效果,实现获取手机通讯录、字母排序显示、搜索联系人、拨打电话
  11. LeaRun敏捷开发框架
  12. 3D全景技术打造三维数字化虚拟博物馆
  13. python爬虫视频教程
  14. 喜欢艾弗森,退役了。。。
  15. 十一招解决:系统IE部分网页打不开怎么办(转载)
  16. window解压缩软件解压tar.gz文件遇到的坑
  17. 手机无网状态下获取经纬度,离线定位的方法。
  18. 计算机科学与技术实验题代做,计算机科学与技术专业代写(本科)毕业设计(论文)要求...
  19. 语音合成(speech synthesis)方向六:歌唱合成(singing voice synthesis)
  20. Quartus调用FIFO或者是RAM、ROM出现的问题

热门文章

  1. hadoop Safe mode is ON 的解决办法
  2. matlab scatter3点颜色,使用for循环MATLAB时,scatter3中的系列颜色与Legend不匹配
  3. Asp.Net 密码加密技术
  4. 设置局域网内共享磁盘
  5. 宝可梦 序列号认证服务器发生了错误,宝可梦探险寻宝无法连接服务器是什么原因...
  6. P1540 机器翻译洛谷题解
  7. TortoiseSVN 打Tags
  8. Addressing Failure Prediction by Learning Model Confidence
  9. mkisofs命令制作光盘ISO
  10. c语言程序图像抠图,Opencv使用鼠标任意形状的抠图