PHP框架之Laravel基础知识最全总结,还不快收藏
liuian 2024-12-17 15:04 18 浏览
一、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 然后回车,出现如下画面表示安装成功:
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文件夹下
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 @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>
在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 @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
模板继承语法:@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()较多,因为写法简介方便。
好了,今天的分享就到这里,一个基础的总结,希望对你有用,如果喜欢我的内容,欢迎收藏~~留言~~
谢谢~~
相关推荐
- HR必备Excel函数:4个与日期相关的计算函数。
-
提到日期函数,很多人首先会想到“today”,它可以显示当天的日期,并且每次打开表格时都会自动更新。但是,对于前天、昨天、明天和后天的日期,就不能用yesterday或者tomorrow等这些英文了,...
- 这篇文章有点长,但可以让你十分钟玩转Excel的时间函数
-
日期与时间函数——TODAY、NOW、YEAR、MONTH、DAY!如何用WORKDAY函数查询距离某天的第20个工作日是哪一天?如何用NETWORKDAYS函数查询员工工作了多少个工作日?如何用WE...
- Excel2020年日历套装,表格设计,农历显示,查阅套打轻松应用
-
Hello大家好,我是帮帮。今天跟大家分享一组Excel2020年日历套装,表格设计,自带农历控件,查阅套打轻松应用。有个好消息!为了方便大家更快的掌握技巧,寻找捷径。请大家点击文章末尾的“了解更多”...
- 巧用NETWORKDAYS函数计算两个日期之间工作日的天数
-
带有日期的单元格是我们日常使用EXCEL的时候经常见到的,有的时候我们需要求出两个日期之间间隔的天数,可以直接用结束日期减去开始日期即可,这是个非常简单的减法公式。不过这个单纯的减法公式会默认去掉开始...
- Excel按工作日、休息日进行汇总
-
1、按周六日/其它时间汇总为了区分一周的周六日和其它时间,可以使用WEEKDAY函数,把WEEKDAY函数的第2个参数指定为2,如WEEKDAY(A3,2),则周一返回1,周二返回2,…,周六返回...
- 如何计算每月应出勤天数,如有法定假期和调休,如何计算
-
本文介绍如何计算每月的应出勤天数。第一部分介绍正常双休制下计算应出勤天数;第二部份介绍当月有法定假期和调休的情况下计算应出勤天数。一、计算正常双休制的应出勤天数如下图所示,要求计算各员工2021年3月...
- 《Excel一键生成工作日历:让会议排期更轻松!》
-
每当需要安排会议时,总要翻看日历确认工作日,再逐个标注会议时间,既耗时又容易出错。今天教大家用Excel快速生成工作日历表,让会议排期变得简单高效!一、快速生成日历框架创建基础日期:在A1单元格输入月...
- 如何计算指定日期区间内,有多少工作日和休息日?
-
大家好,今天咱们要解决的问题是如何计算给定的一段日期内,正常工作日有多少天,放假时间有多少天?比如咱们要计算2025年3月份工作日一共有多少天,又有多少天放假,如下图所示:通过肉眼我们可以数清楚,20...
- 如何如何在表格中自动突出显示双休日?
-
现在不少人喜欢用Excel来制作备忘录或安排工作事项。在表格中输入日期后,可以使用条件格式突出显示双休日,避免在休息日安排了工作。具体方法是这样的:第1步:选择要设置条件格式的日期单元格区域;在“开始...
- excel函数技巧:networkdays.intl判断节假日
-
如图,想知道6月的每一天是否是节假日,公式如下:=NETWORKDAYS.INTL(A2,A2,1,$E$2:$E$28)这个函数既可以判断当前日期(一参=二参)是否是周末及工作日(三参、四参)还可得...
- 仅需3步,让考勤表根据实际休息日,自动地填充颜色
-
Hello,大家好,之前跟大家分享了我们如何让考勤表根据单休与双休自动的填充颜色,最近有粉丝问到:能不能让考勤表根据实际的休息日自动的填充颜色呢?可以是可以,只不过因为牵扯到假期调休,我们每年的休息日...
- 5步搞定动态考勤表!标记节假日、调休日?Excel自动变色!
-
今天教你用「动态考勤表」一招解决所有问题!只需输入月份,自动变色、自动更新节假日,从此告别加班,效率翻倍!动态考勤表的优势:自动变色:节假日、双休日一键标记,颜色分明。一表多用:修改月份即可...
- 一起用python做个炫酷音乐播放器,想听啥随便搜
-
前言前段时间写的Python自制一款炫酷音乐播放器,有不少小伙伴私信我,对播放器提了不少改进建议,让我完善播放器的功能。今天音乐播放器2.0版本完成了,大家一起来看看是如何用python自制一款炫酷的...
- 用Python做个“冰墩墩雪容融”桌面部件(好玩又有趣)
-
桌面太单调?今天就带大家,一起用Python的PyQt5开发一个有趣的自定义桌面动画挂件,看看实现的动画挂件效果!下面,我们开始介绍这个自定义桌面动画挂件的制作过程。一、核心功能设计实现将动态图gif...
- Python串口调试助手源码分享
-
以下是一个基于Python和PyQt5实现的串口调试助手示例,包含核心功能实现代码:pythonimportsysimportserialfromPyQt5.QtCoreimportQTim...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
python使用fitz模块提取pdf中的图片
-
《人人译客》如何规划你的移动电商网站(2)
-
Jupyterhub安装教程 jupyter怎么安装包
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- table.render (33)
- uniapp textarea (33)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- react-admin (33)
- vscode切换git分支 (35)
- vscode美化代码 (33)
- python bytes转16进制 (35)