文档章节

laravel5.3的新功能尝鲜

lilugirl
 lilugirl
发布于 2016/11/14 15:30
字数 2147
阅读 332
收藏 5

 

 

上一节课 https://my.oschina.net/lilugirl2005/blog/783370

上一节课我们讲了laravel5.3的安装,这节讲laravel5.3的一些基础命令和配置

Listeners文件夹

进入laravel项目目录输入命令

创建用户注册的事件监听 看看

php artisan make:listener UserSignUpListener --event=UserSignUp

 

cache helper function

用tinker做一些cache方面的练习

DB 查询返回 Collection 

创建初始数据

创建3条假数据

其实你可以生成更多的测试数据方便后面的分页功能的测试,所以我又执行了一遍命令生成了30条假数据

 

DB查询语句

其他灵活的方法

loop 变量使用 

做一个小例子

修改routes/web.php文件

修改对应的view文件  resources/views/welcome.blade.php

<body>
        <div class="flex-center position-ref full-height">
        <ul>
        @foreach($users as $user)
         <li>{{$loop->index}}{{$user->name}}</li>
        @endforeach
         </ul>
        </div>
</body>

浏览下一看看

还可以使用

$loop->count 获取总数
$loop->remaining 剩下几个
$loop->first 是否是第一个
$loop->last 是否是最后一个

循环里套循环
小循环里也可以用loop 用法:
$loop->partent->index 获取父循环的id
 

分页实现

例如 修改 routes/web.php

Route::get('/', function () {

   $users=\App\User::paginate(5);
   return view('welcome',compact('users'));
 
});  

在对应的view页面加上  $user->links()

  <div class="flex-center position-ref full-height">
        <ul>
        @foreach($users as $user)
         <li>{{$loop->remaining}} {{$user->name}}</li>
        @endforeach
        {{$users->links()}}
        </ul>
  </div>

public/css目录下自带了 app.css样式 这个样式整合了bootstrap风格, 可以加到view文件中

 <link href="css/app.css" rel="stylesheet"  type="text/css" >

得到漂亮的分页效果

 

想自定义分页效果怎么办? 你可以使用命令 php artisan vendor:publish

这个命令可以将站点中使用的vendor功能发布到resources目录

进入这个目录resources/views/vendor/pagination果然看到生成了几个文件
修改default.blade.php看看 是否会让分页部分有变化

保存以后看看效果 果然有变化 。

那如果我想启用bootstrap-4.blade.php文件作为分页模版怎么办呢,只需要在页面视图文件resources/views/welcome.blade.php中的$users->links() 方法里传入参数即可 ,写法为 $users->links('vendor.pagination.bootstrap-4')  

 <div class="flex-center position-ref full-height">
        <ul>
        @foreach($users as $user)
         <li>{{$loop->remaining}} {{$user->name}}</li>
        @endforeach
        {{$users->links('vendor.pagination.bootstrap-4')}}
         </ul>
</div>

然后修改一下resources/views/vendor/pagination/bootstrap-4.blade.php 看看分页是否会有变化 .

 

使用 Mailable 发送邮件

创建email文件

使用命令 php artisan make:mail welcometo1ke

然后在 app/Mail/ 目录下会生成文件 welcometo1ke.php

修改welcometo1ke.php文件的bulid方法

public function build()
    {
        return $this->view('email.welcome');
    }

然后创建对应的view文件 在resources/views目录下创建email目录 ,在resources/views/email目录下创建welcome.blade.php文件

随便在welcome.blade.php文件里写点东西 

然后修改路由文件routes/web.php

Route::get('/email',function(){
      Mail::to('lilugirl2005@126.com')->send(new \App\Mail\welcometo1ke());
});

 

修改config/mail.php文件中的from配置

 'from' => [
        'address' => '794516454@qq.com',
        'name' => '10yuelive',
    ],

 

在.env文件中 MAIL_HOST对应的是mailtrap.io的服务 

注册登录mailtrap.io  ,mailtrap.io屏蔽了国内的一些邮箱,因此最好用gmail邮箱注册

登录后 点击Demo inbox

复制用户名密码

相应的修改 .env文件中 对应的 MAIL_USERNAME和MAIL_PASSWORD

在浏览器里输入http://10yue.live/email 发送邮件

之后登录到mailtrap 就可以看到刚才发送的邮件内容

这封邮件的内容就来自于之前编辑的邮件模版 resources/views/email/welcome.blade.php

下面演示如何在邮件中传递变量

app/Mail/welcometo1ke.php 文件改动如下

routes/web.php改动如下

resources/views/email/welcome.blade.php文件改动如下

重新在浏览器中打开 http://10yue.live/email 发送一次邮件

再到mailtrap查看发送结果

 

toggle功能

这里通过用户点击收藏文章的场景展示toggle功能

这里用户和文章的收藏关系是多对多

先生成假数据 post 和收藏表 favorites

输入命令

php artisan make:model Post -m
//生成Post model和migration文件
php artisan make:migration create_favorites_table --create=favorites
// 生成favorites表的migration文件

这时候会看到database/migration目录下对应生成了两个文件

修改...posts_table.php文件 在up方法中 添加两个字段 title 和 body

修改...favorites_table.php文件 在up方法中增加两个外健 user_id和post_id

修改数据生成文件 database/factories/ModelFacotry.php 增加Post表生成语句

然后就可以执行命令 php artisan migrate 了

使用tinker命令生成30条post假数据

先执行

php artisan tinker

再输入

factory(App\Post::class,30)->create()

user表之前已经造了n多假数据这里就不造了

构建多对多关系

修改app/User.php文件 增加favorites方法

执行tinker命令测试 favorites方法

然后检查数据库 发现favorites表自动生成了一条记录

相反的detach可以删除关系

favorites数据库为空

toggle的使用

 

Notify:Email 通知

邮件通知的应用场景:假设网站上每发布一篇文章,我们都email通知到用户。
这个文章就是我们上文定义的post表

创建通知文件

执行命令

php artisan make:notification PostPublished
//PostPublished是我自己取的名字 你可以随意取名

之后会在app/Notifications目录下生成一个PostPublished.php文件

我们先来发送一封默认的通知邮件

修改routes/web.php 添加一个路由 调用用户的notify方法

用户的notify方法之所以可以调用是因为用户的model文件app/User.php 中声明了 use Notifiable;

在浏览器上执行 http://10yue.live/notify 果然看到通知邮件发出来了,在mailtrap里查看

简单自定义通知邮件内容

可以通过修改app/Notifications/PostPublished.php 文件中的toMail方法 来改变邮件内容。

在浏览器上执行 http://10yue.live/notify 再次发送邮件 效果如下

修改config/app.php中的应用名称 也可以改变邮件相应内容

在邮件中注入变量

比如我们把post信息注入

修改app/Notifications/PostPublished.php 文件


修改routes/web.php文件的邮件通知部分

发送邮件 查看发送内容

完全定制化邮件模版

通过执行以下操作可以完全自由修改邮件模版

执行命令 

php artisan vendor:publish

然后在resources/views/vendor/notifications文件夹下就生成了email模版文件 

可以通过修改email.blade.php文件彻底修改email通知模版的内容

Notify:站内信通知 (通过database记录)

站内信通知是将通知消息存储到数据库中的,需要先建立对应的数据表

输入以下命令创建表

php artisan notifications:table

然后在database/migrations目录生成了对应的migration文件

然后在命令行中输入 php artisan migrate命令生成数据表

修改app/Notifications/PostPublished.php 文件中的配置

浏览器中执行http://10yue.live/notify  然后在数据库notifications表中可以看到一条记录

添加另一种通知类型 

比如说站内通知的类型还有 用户订阅成功的通知,那么我们就需要再新建一种通知类型

执行命令 

php artisan make:notification UserSubscribe

在 app/Notifications目录生成了UserSubscribe.php文件

修改UserSubscribe.php文件如下

在routes/web.php上添加路由

在浏览器执行 http://10yue.live/subscribe

数据库中果然多了一条记录

综合应用

下面我们要根据之前学到的内容做一个简单的消息通知页面 

首先在routes/web.php文件中模拟某个用户登录 创建消息通知的路由 消息已读路由等

在resources/views/notification目录下创建 index.blade.php文件 内容如下

<h1>我的通知</h1>
<ul>
    @foreach(Auth::user()->unreadNotifications as $notification)
        @include('notifications.'.snake_case(class_basename($notification->type)))
    @endforeach
</ul>

<form method="POST" action="/mynote/read" accept-charset="UTF-8">
   {{csrf_field()}}
   {{method_field('DELETE')}}
   <button type="submit">标记已读</button>
</form>

在resources/views/notification目录下创建 user_subscribe.blade.php文件 内容如下

<li>
  {{$notification->data['subscribed_at']}}
</li>

在resources/views/notification目录下创建 post_published.blade.php文件 内容如下

<h3>文章发布通知</h3>
<li>{{$notification->data['title']}}</li>

 

在浏览器输入 http://10yue.live/subscribe  和 http://10yue.live/notify

然后打开 https://10yue.live/mynote

就能看到如下内容

console Command 

routes/console.php 文件一瞥

在命令行执行命令

php artisan inspire

会得到一个名言警句

尝试在routes/console.php添加一个简单的命令

Artisan::command('hello',function(){
    $this->comment('hey there');
});

执行命令  会得到定义的字符串

php artisan hello

 

再尝试一下带参数的命令
routes/console.php添加代码

Artisan::command('hello {name}',function(){

    $this->comment('hey '.$this->argument('name'));

});

实行命名

php artisan hello lilu

其中lilu是参数

 

给命令添加描述

查看命令描述或者解释

php artisan 
php artisan help hello

 

Passport 使用 OAuth 2.0 

 

© 著作权归作者所有

lilugirl
粉丝 103
博文 477
码字总数 134917
作品 0
杨浦
程序员
私信 提问
加载中

评论(0)

晚黎/iDashboard

iDashboard - Laravel5.3基本的权限管理系统 当前分支为Laravel版本~,Vue2.0版本戳这里 ,Vue2.0只完成了部分,用户管理,权限管理以及角色管理,其他的都还没有做。本人时间有限,重复的增删...

晚黎
2016/11/07
0
0
体验升级:阿里云DDoS高防日志 - 运营中心:拓扑图、过滤与交互等

概述 随着日志服务的仪表盘功能升级,阿里云DDoS高防以及新BGP高防的全量日志中内置仪表盘中文版也做了一些升级,以便增强客户对于运营效果的洞察。 主要更新 拓扑布局 重新布局指标与趋势分...

成喆
2019/02/03
0
0
LibreOffice 6.1.3 和 6.0.7 发布,开源办公套件

LibreOffice 同时发布了 “Fresh” 分支的 6.1.3 版本和 “Still” 分支的 6.0.7 版本。 作为尝鲜版本,LibreOffice 6.1.X 在提供一些新功能和改进的同时,可能也会包含一些烦人的 bug , 推荐...

王练
2018/11/08
1.5K
0
谷歌已推送 Android Q Beta 1

今日凌晨,谷歌正式推送了 Android Q 的首个 Beta 版本,Pixel 全系列手机可以尝鲜体验这款最新的系统。 据官方博客介绍,Android Q 为用户带来了许多额外的隐私和安全功能,以及针对可折叠设...

局长
2019/03/14
3.3K
3
Laravel5.3之Session源码解析(下)

说明:在中篇中学习了session的CRUD增删改查操作,本篇主要学习关闭session的相关源码。实际上,在Laravel5.3中关闭session主要包括两个过程:保存当前URL到session介质中;在Response Head...

botkenni
2016/11/19
101
0

没有更多内容

加载失败,请刷新页面

加载更多

1核2G云服务哪家便宜?

前言: 又到一年续费时,我们来盘点哪些云厂商新手活动给力?有人说我又不是新手,有啥用?你要知道你作为家里唯一一位程序员,有强大的家庭后盾,比如爸爸妈妈爷爷奶奶叔叔阿姨......... 不过...

王念博客
4分钟前
32
0
JavaScript 箭头函数:适用与不适用场景

JavaScript 箭头函数:适用与不适用场景 现代 JavaScript 中最引人注目的功能之一是引入了箭头函数,用 => 来标识。 这种函数有两大优点 – 非常简洁的语法,和更直观的作用域和 this的绑定。...

王囧草
13分钟前
19
0
Docker快速入门

1 几个概念 Docker可以把开发的软件代码以及软件所依赖的所有运行时环境、依赖类库都打包成一个容器镜像,因此使用docker打包软件可以让程序员开发的程序运行在各种不同的计算机硬件环境中。...

即将秃头的Java程序员
14分钟前
40
0
Zookeeper-03-权限管理

Zookeeper-03-权限管理 用的不多,暂时先不整理了

moon888
15分钟前
36
0
渲染学习笔记——GPU应用阶段

1.GPU流水线 注:绿色可编程,橙色可控不可编程,红色完全不可控 2.顶点着色器 顶点着色器计算速度快于片元着色器,所以很多中间数据在顶点着色器计算。 3.裁剪 4.屏幕映射 5.三角形 6.片元着...

myctrd
21分钟前
39
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部