5.创建回复表单

未匹配的标注

本节说明

  • 对应视频第 5 小节:The Reply Form

本节内容

开始之前我们先在主布局文件中修改一下body的样式:
\resources\views\layouts\app.blade.php

. . <body style="padding-bottom: 100px;"> . .

首先我们先注册一个用户:
file

登录之后访问 forum.test/threads/1 ,接着在话题页面增加一个回复框,并且限定只有已登录用户才能看到:
\resources\views\threads\show.blade.php

. . <div class="row"> <div class="col-md-8 col-md-offset-2"> @foreach ($thread->replies as $reply) @include('threads.reply') @endforeach </div> </div> @if (auth()->check()) {{--已登录用户才可见--}} <div class="row"> <div class="col-md-8 col-md-offset-2"> <form method="post" action="{{ $thread->path() . '/replies' }}"> <div class="form-group"> <textarea name="body" id="body" class="form-control" placeholder="说点什么吧..."rows="5"></textarea> </div> <button type="submit" class="btn btn-default">提交</button> </form> </div> </div> @endif . .

刷新页面:
file

退出登录:
file

在上一节我们对添加回复的动作已经编写了单元测试,且已通过:
file

但是在我们输入回复再提交时却会报错:
file

因为我们忘了给POST动作加上CSRF验证,加上即可:

. . <form method="post" action="{{ $thread->path() . '/replies' }}"> {{ csrf_field() }} . .

再次测试,提交成功:
file

未登录用户只能浏览回复列表,无法发表回复,我们可以引导未登录用户先去登录:

. . @else <p class="text-center">请先<a href="{{ route('login') }}">登录</a>,然后再发表回复 </p> @endif . .

file

为页首加上导航:
\resources\views\layouts\app.blade.php

. . <div class="collapse navbar-collapse" id="app-navbar-collapse"> <!-- Left Side Of Navbar --> <ul class="nav navbar-nav"> <li><a href="/threads">All Threads</a></li> </ul> . .

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~