新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 程序开发 > 框架

PHP框架之Laravel基础知识最全总结,还不快收藏

时间:2019-12-20 09:32:25  来源:  作者:

<a href=http://www.solves.com.cn/it/cxkf/yy/php/ target=_blank class=infotextkey>php</a>框架之Laravel基础知识最全总结,还不快收藏

laravel框架基础知识

一、laravel简介

laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全;今天我们一起来看看框架的基础知识

二、版本选择

本篇学习笔记以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系统下需要编译安装。

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

1、安装包下载安装

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

PHP框架之Laravel基础知识最全总结,还不快收藏

laravel5启动页面

2、composer安装

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

3、简单介绍

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

  

PHP框架之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_base11 页面输出: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/multi10 此路由可通过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/multi11 请求返回字符串: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/yuwenbo11 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/username10 输出:userid is username11 12 访问url:http://127.0.0.1/laravel/public/user13 输出:userid is14 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/513 返回输出:this num is 514 15 访问url:http://127.0.0.1/laravel/public/num16 返回输出:this num is 1517 18 访问url:http://127.0.0.1/laravel/public/num/fhdja19 页面报错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/info14 页面返回:http://127.0.0.1/laravel/public/student/info15 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/info10     Route::get('student/info',['as' => 'studentInfo' ,function(){11         return route('studentInfo');12     }]);13 14     //此时的访问地址:http://127.0.0.1/laravel/public/admin/info/yuwenbo/2015     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/public14 浏览器显示laravel的欢迎界面15 16 17 //做如下修改18 Route::get('welcome',function(){19    return view('welcome');20 });21 22 修改后访问url:http://127.0.0.1/laravel/public/welcome23 浏览器同样显示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 Controller12 {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.php14 <?php15 /**16  * Created by PhpStorm.17  * User: Administrator18  * Date: 2018/8/25/02519  * Time: 0:5120  */21 namespace App\Http\Controllers;22 23 class AdminController extends Controller24 {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/534 页面输出: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 Model13 {14     public static function getAdmin()15     {16         return 'this is admin model static getAdmin action';17     }18 19 }20 21 ?>22 23 24 //控制器文件 AdminController.php25 <?php26 /**27  * Created by PhpStorm.28  * User: Administrator29  * Date: 2018/8/25/02530  * Time: 0:5131  */32 namespace App\Http\Controllers;33 34 class AdminController extends Controller35 {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=330810 DB_DATABASE=shop11 DB_USERNAME=root12 DB_PASSWORD=root13 14 CACHE_DRIVER=file15 SESSION_DRIVER=file16 QUEUE_DRIVER=sync17 18 redis_HOST=127.0.0.119 REDIS_PASSWORD=null20 REDIS_PORT=637921 22 MAIL_DRIVER=smtp23 MAIL_HOST=mailtrap.io24 MAIL_PORT=252525 MAIL_USERNAME=null26 MAIL_PASSWORD=null27 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 Controller15 {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 Controller15 {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         //插入一条数据返回插入的id25         $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 Controller16 {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');//自增125         $rows = DB::table('user')->where('username','admin')->increment('sex',$n);//自增n26 27         $rows = DB::table('user')->where('username','admin')->decrement('sex');//自减128         $rows = DB::table('user')->where('username','admin')->decrement('sex',$n);//自减n29 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 Controller15 {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 Controller15 {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         //返回结果集中指定的字段pluck32         $usernames = DB::table('user')->whereRaw('id >= ? and sex = ?', ['5' ,'1'])->pluck('username');33 34         //返回指定字段的下标lists35         $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         //每次查指定的条数chunk41         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.php2 3 this is views/admin/index.blade

(二)、输出视图

 1 //路由文件 2 <?php 3     //绑定控制器方法 4     Route::get('admin/index', 'AdminController@index'); 5  6 ?> 7  8  9 //控制器文件 AdminController.php10 <?php11 /**12  * Created by PhpStorm.13  * User: Administrator14  * Date: 2018/8/25/02515  * Time: 0:5116  */17 namespace App\Http\Controllers;18 19 class AdminController extends Controller20 {21     public function index()22     {23         return view('adminindex');//传入要输出的模板名即可24     }25 }26 27 访问url:http://127.0.0.1/laravel/public/admin/index28 页面显示:this is views/admin/index.blade

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

(三)、模板详解

1、模板继承

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

base.blade.php

 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 @show11 <!--[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 @show24 <!--aside nav-->25 <!--aside nav-->26 @section('leftmenu')27 <aside class="lt_aside_nav content mCustomScrollbar">28      //左边菜单29 </aside>30 @show31 32 <section class="rt_wrap content mCustomScrollbar">33 34   @yield('content')  //主内容区域35 36 </section>37 @section('footer')38     //页面底部39 @show40 @section('JAVAscript')41     //JavaScript代码区42 @show43 </body>44 </html>

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

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 @stop15 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 @stop39 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.base'),就可以继承common目录下的base.blade.php模板

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

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

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

1 @extends('common.base')2 3 @section('header')4     @parent5     header6 @stop

2、基础语法及使用

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

 1 //例如控制器中 2  3 public function index(){ 4         5         return view('index',['name' => 'yuwenbo']); 6  7 } 8  9 11 12 //模板中输出index.blade.php13 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 admin5 @elseif($user == 'yuwenbo')6    i am yuwenbo7 @else8    i am default9 @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()较多,因为写法简介方便。

 

PHP框架之Laravel基础知识最全总结,还不快收藏

laravel

好了,今天的分享就到这里,一个基础的总结,希望对你有用,如果喜欢我的内容,欢迎收藏~~留言~~

谢谢~~



Tags:PHP框架   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
laravel框架基础知识一、laravel简介laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全;今天我们一起来看看框架的基础知识二、版本选择本篇学习笔记...【详细内容】
2019-12-20   PHP框架  点击:(29)  评论:(0)  加入收藏
版本系统这两个框架已经走了很长一段路,如果您在2年前对它们熟悉,那么您今天可能根本不认识它们。在这方面,它们都不同于symfony,后者的变化要慢得多,甚至2.7和3.0版本之间的差异...【详细内容】
2019-10-24   PHP框架  点击:(23)  评论:(0)  加入收藏
ThinkPHP的宗旨是简化开发、提高效率、易于扩展,其在对数据库的支持方面已经包括MySQL、MSSQL、Sqlite、PgSQL、 Oracle,以及PDO的支持。ThinkPHP有着丰富的文档和示例,框架的...【详细内容】
2019-08-26   PHP框架  点击:(191)  评论:(0)  加入收藏
PHP框架真正地发展是从PHP5开始的。其实在PHP4时代就有一些框架,但是由于使用复杂,没有纯PHP好用,所以一直到了PHP5才有大的发展。随着PHP5面向对象功能的实现。基于PHP的产品...【详细内容】
2019-08-13   PHP框架  点击:(31)  评论:(0)  加入收藏
首先要下载thinkphp最新版本3.2.2版本,下载地址http://www.thinkphp.cn/donate/download/id/502.html。建立一个项目,将压缩包解压后的所有文件放到项目中,然后配置apach服务...【详细内容】
2019-08-07   PHP框架  点击:(55)  评论:(0)  加入收藏
TP框架:ThinkPHP简单、快速,基于MVC和面向对象,易用性较高,是一款简洁实用的轻量级框架。Laravel框架:Lavavel一直秉承着优雅的原则,很好的支持了composer,实现了更丰富的扩展,社区...【详细内容】
2019-06-18   PHP框架  点击:(159)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条