Laravel5.1 搭建简单的社区--发表帖子
Posted Alex_sun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel5.1 搭建简单的社区--发表帖子相关的知识,希望对你有一定的参考价值。
首先我们先登陆我们的用户,访问/discussions/create 路由,因为这条路由在resource声明了 所以我们直接在PostsController中的create方法中直接实现逻辑就好:
public function create() { return view(‘forum.create‘); }
相应的 创建create页面:
@extends(‘app‘) @section(‘content‘) <div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2" role="main"> {!! Form::open([‘method‘=>‘post‘,‘url‘=>‘/discussions/‘]) !!} <!--- Title Field ---> <div class="form-group"> {!! Form::label(‘title‘, ‘Title:‘) !!} {!! Form::text(‘title‘, null, [‘class‘ => ‘form-control‘]) !!} </div> <!--- Body Field ---> <div class="form-group"> {!! Form::label(‘body‘, ‘Body:‘) !!} {!! Form::textarea(‘body‘, null, [‘class‘ => ‘form-control‘]) !!} </div> <!-- 提交 --> {!! Form::submit(‘提交‘,[‘class‘ => ‘btn btn-primary form-control‘]) !!} {!! Form::close() !!} <div> @if($errors->any()) <ul class="list-group"> @foreach($errors->all() as $error) <li class="list-group-item list-group-item-danger">{{ $error }}</li> @endforeach </ul> @endif </div> </div> </div> </div> @stop
我们需要一个request来指定一些规则:
class StorePostsRequest extends Request { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ ‘title‘ => ‘required‘, ‘body‘ => ‘required|min:10‘, ]; } }
现在当点击提交按钮的时候会调用PostsController的store方法:
public function store(Requests\StorePostsRequest $request) { // 取到数据 $user_ids = [ ‘user_id‘ => \Auth::user()->id, ‘last_user_id‘ => \Auth::user()->id, ]; // 存入数据库 $discussion = Discussion::create(array_merge($request->all(), $user_ids)); // 重定向 return redirect()->action(‘[email protected]‘, $discussion->id); }
这样就完成了发布帖子的功能,但是我们发现发布帖子是需要登录进来才可以的,所以我们要用middleware来保护一下文章的增删改查方法,我们在PostsController中使用系统自带的auth中间件:
public function __construct() { // 使用中间件 声明只有4个方法受保护 $this->middleware(‘auth‘, [‘only‘=>[ ‘create‘, ‘store‘, ‘update‘, ‘edit‘, ]]); }
为了方便,我们把退出登录的方法也写出来:
// 退出登陆 Route::get(‘/user/logout‘, ‘[email protected]‘);
public function logout() { // 退出登陆 \Auth::logout(); // 重定向回首页 return redirect(‘/‘); }
以上是关于Laravel5.1 搭建简单的社区--发表帖子的主要内容,如果未能解决你的问题,请参考以下文章