zoukankan      html  css  js  c++  java
  • 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(RequestsStorePostsRequest $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('/');
        }
  • 相关阅读:
    docker 安装es
    Redis 和 Zookeeper 到底谁更牛?
    Redisson 看门狗
    记一次线上服务CPU 100%的处理过程
    必须了解的mysql三大日志-binlog、redo log和undo log
    python学习笔记 -- reduce合并减少
    Python学习笔记 -- 列表2: 遍历:嵌套列表, 将其中同位置的元素组成新的列表
    python学习笔记 -- filter() 过滤符合条件的可迭代序列
    python学习笔记 -- map() 操作可迭代序列
    python学习笔记
  • 原文地址:https://www.cnblogs.com/Alex-sk/p/6680507.html
Copyright © 2011-2022 走看看