上一节课 https://my.oschina.net/lilugirl2005/blog/783370php
上一节课咱们讲了laravel5.3的安装,这节讲laravel5.3的一些基础命令和配置css
进入laravel项目目录输入命令html
建立用户注册的事件监听 看看laravel
php artisan make:listener UserSignUpListener --event=UserSignUp
用tinker作一些cache方面的练习web
其实你能够生成更多的测试数据方便后面的分页功能的测试,因此我又执行了一遍命令生成了30条假数据数据库
其余灵活的方法bootstrap
修改routes/web.php文件浏览器
修改对应的view文件 resources/views/welcome.blade.phpbash
<body> <div class="flex-center position-ref full-height"> <ul> @foreach($users as $user) <li>{{$loop->index}}{{$user->name}}</li> @endforeach </ul> </div> </body>
浏览下一看看app
还可使用
$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 看看分页是否会有变化 .
使用命令 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功能
这里用户和文章的收藏关系是多对多
输入命令
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数据库为空
邮件通知的应用场景:假设网站上每发布一篇文章,咱们都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通知模版的内容
站内信通知是将通知消息存储到数据库中的,须要先创建对应的数据表
输入如下命令建立表
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
就能看到以下内容
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