您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

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

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

PHP框架之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 AppHttpController;

命名规则:控制器文件名跟类名统一首字母大写,以 控制器名+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 AppHttpControllers;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 AppHttpControllers;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目录下,统一首字母大写,文件名与类名一致,统一继承于 IlluminateDatabaseEloquentModel 基类;

(一)、新建模型及使用

 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 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 AppHttpControllers;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 AppHttpControllers;10 use AppHttpControllersController;11 use IlluminateHttpRequest;12 use IlluminateSupportFacadesDB;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 AppHttpControllers;10 use AppHttpControllersController;11 use IlluminateHttpRequest;12 use IlluminateSupportFacadesDB;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 AppHttpControllers;11 use AppHttpControllersController;12 use IlluminateHttpRequest;13 use IlluminateSupportFacadesDB;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 AppHttpControllers;10 use AppHttpControllersController;11 use IlluminateHttpRequest;12 use IlluminateSupportFacadesDB;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 AppHttpControllers;10 use AppHttpControllersController;11 use IlluminateHttpRequest;12 use IlluminateSupportFacadesDB;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 AppHttpControllers;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框架   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
大家好,我是小蜗牛,今天给大家分享一下,如何用ThinkPHP5.1.*版本实现定时任务,例如凌晨12点更新数据、每隔10秒检测过期会员、每隔几分钟发送请求保证ip的活性等本次分享,主要用...【详细内容】
2020-10-22  Tags: PHP框架  点击:(339)  评论:(0)  加入收藏
Laravel是当今最熟练,流行和广泛使用的开源框架之一。Laravel具有多种功能,例如模板引擎,MVC架构支持,安全性高,开发者工具,数据库迁移等。这些Laravel高级功能使它比其他PHP框架...【详细内容】
2020-06-12  Tags: PHP框架  点击:(64)  评论:(0)  加入收藏
laravel框架基础知识一、laravel简介laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全;今天我们一起来看看框架的基础知识二、版本选择本篇学习笔记...【详细内容】
2019-12-20  Tags: PHP框架  点击:(86)  评论:(0)  加入收藏
版本系统这两个框架已经走了很长一段路,如果您在2年前对它们熟悉,那么您今天可能根本不认识它们。在这方面,它们都不同于symfony,后者的变化要慢得多,甚至2.7和3.0版本之间的差异...【详细内容】
2019-10-24  Tags: PHP框架  点击:(90)  评论:(0)  加入收藏
ThinkPHP的宗旨是简化开发、提高效率、易于扩展,其在对数据库的支持方面已经包括MySQL、MSSQL、Sqlite、PgSQL、 Oracle,以及PDO的支持。ThinkPHP有着丰富的文档和示例,框架的...【详细内容】
2019-08-26  Tags: PHP框架  点击:(600)  评论:(0)  加入收藏
PHP框架真正地发展是从PHP5开始的。其实在PHP4时代就有一些框架,但是由于使用复杂,没有纯PHP好用,所以一直到了PHP5才有大的发展。随着PHP5面向对象功能的实现。基于PHP的产品...【详细内容】
2019-08-13  Tags: PHP框架  点击:(214)  评论:(0)  加入收藏
首先要下载thinkphp最新版本3.2.2版本,下载地址http://www.thinkphp.cn/donate/download/id/502.html。建立一个项目,将压缩包解压后的所有文件放到项目中,然后配置apach服务...【详细内容】
2019-08-07  Tags: PHP框架  点击:(267)  评论:(0)  加入收藏
TP框架:ThinkPHP简单、快速,基于MVC和面向对象,易用性较高,是一款简洁实用的轻量级框架。Laravel框架:Lavavel一直秉承着优雅的原则,很好的支持了composer,实现了更丰富的扩展,社区...【详细内容】
2019-06-18  Tags: PHP框架  点击:(448)  评论:(0)  加入收藏
▌简易百科推荐
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Python阿杰    Tags:FastAPI   点击:(6)  评论:(0)  加入收藏
文章目录1、Quartz1.1 引入依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>...【详细内容】
2021-12-22  java老人头    Tags:框架   点击:(12)  评论:(0)  加入收藏
今天来梳理下 Spring 的整体脉络啦,为后面的文章做个铺垫~后面几篇文章应该会讲讲这些内容啦 Spring AOP 插件 (了好久都忘了 ) 分享下 4ye 在项目中利用 AOP + MybatisPlus 对...【详细内容】
2021-12-07  Java4ye    Tags:Spring   点击:(14)  评论:(0)  加入收藏
&emsp;前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面。但真实项目中我们一般都会使用...【详细内容】
2021-12-06  波哥带你学Java    Tags:SpringSecurity   点击:(18)  评论:(0)  加入收藏
React 简介 React 基本使用<div id="test"></div><script type="text/javascript" src="../js/react.development.js"></script><script type="text/javascript" src="../js...【详细内容】
2021-11-30  清闲的帆船先生    Tags:框架   点击:(19)  评论:(0)  加入收藏
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Argo。 什么是流水线?在计算机...【详细内容】
2021-11-30  叼着猫的鱼    Tags:框架   点击:(21)  评论:(0)  加入收藏
TKinterThinter 是标准的python包,你可以在linx,macos,windows上使用它,你不需要安装它,因为它是python自带的扩展包。 它采用TCL的控制接口,你可以非常方便地写出图形界面,如...【详细内容】
2021-11-30    梦回故里归来  Tags:框架   点击:(27)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  充满元气的java爱好者  博客园  Tags:SpringBoot   点击:(25)  评论:(0)  加入收藏
一、搭建环境1、创建数据库表和表结构create table account(id INT identity(1,1) primary key,name varchar(20),[money] DECIMAL2、创建maven的工程SSM,在pom.xml文件引入...【详细内容】
2021-11-11  AT小白在线中  搜狐号  Tags:开发框架   点击:(29)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  小程序建站    Tags:SpringBoot   点击:(56)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条