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('PostsController@show', $discussion->id);
    }

这样就完成了发布帖子的功能,但是我们发现发布帖子是需要登录进来才可以的,所以我们要用middleware来保护一下文章的增删改查方法,我们在PostsController中使用系统自带的auth中间件:

    public function __construct()
    {
        // 使用中间件 声明只有4个方法受保护
        $this->middleware('auth', ['only'=>[
            'create',
            'store',
            'update',
            'edit',
        ]]);
    }

为了方便,我们把退出登录的方法也写出来:

// 退出登陆
Route::get('/user/logout', 'UsersController@logout');
    public function logout()
    {
        // 退出登陆
        \Auth::logout();
        // 重定向回首页
        return redirect('/');
    }

 

转载于:https://www.cnblogs.com/Alex-sk/p/6680507.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值