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(‘/‘);
    }
时间: 2024-08-27 17:51:23

Laravel5.1 搭建简单的社区(六)--发表帖子的相关文章

Laravel5.1 搭建简单的社区(六)--引入MarkDown

在github中搜索HyperDown,直接复制Parser.php的源代码,在App文件夹中创建一个新的目录 Markdown,在App/MarkDown中创建Parser.php,然后在顶部更改命名空间: namespace App\MarkDown; 到此就已经成功的引入Markdown了,现在我们创建一个Markdown类来方便我们使用: namespace App\MarkDown; class Markdown { protected $parser; /** * Markdown

Laravel5.1 搭建简单的社区(六)--修改文章

因为之前注册了resource路由 所以我们可以直接在PostsController的edit方法中实现逻辑: public function edit($id) { // 通过id取到文章模型 $discussion = Discussion::findOrFail($id); // 返回视图 return view('forum.edit', compact('discussion')); } 创建edit.blade.php (我们使用了form的模型绑定): @extends('app'

Laravel5.1 搭建简单的社区(十二)--Ajax更换头像

此篇记录如何使用ajax进行头像的更换,使用ajax需要引入一个jQuery的插件 jQuery form,在app.blade.php中引入: <link rel="stylesheet" href="/css/bootstrap.css"> {{--引入fontawesome--}} <link rel="stylesheet" href="/css/font-awesome.css"> <l

Laravel5.1 搭建简单的社区(五)--用户登录

定义一条登录的路由: // 用户登录 Route::get('/user/login', '[email protected]'); 添加相应方法后返回视图: public function login() { return view('user.login'); } 创建login视图: @extends('app') @section('content') <div class="container"> <div class="row">

Laravel5.1 搭建简单的社区(四)--展示帖子页面

首先我们注册resource路由: Route::get('/', '[email protected]'); Route::resource('discussions', 'PostsController'); 在PostsController的show方法返回一个视图: public function show($id) { // 取到单条帖子 $discussion = Discussion::findOrFail($id); // 返回视图 return view('forum.show

Laravel5.1 搭建简单的社区(八)--展示评论

增加评论功能需要创建新的表: php artisan make:migration create_comments_table --create=comments php artisan make:model Comment 修改迁移文件: public function up() { Schema::create('comments', function (Blueprint $table) { $table->increments('id'); // 评论段落 $table->text('

SpringMVC笔记——SSM框架搭建简单实例

落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发的框架,对于新手来说也是比较容易学习入门的.虽说容易,但在框架搭建过程中仍然遇到了许多问题,因此用实例记录下来吧. 实例 第一步——导包 Spring框架包及其依赖包 MyBatis框架包及其依赖包 MyBatis-EhCache架包 C3P0架包 MySql数据库驱动包 项目架包如下: 项目结构如

Django:快速搭建简单的Blog

一,创建项目 1, 为blog创建名为mysite的工程项目: django-admin.py startproject mysite 2, 项目结构如下: mysite ├── manage.py └── mysite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等. settings.py ---- 包含了项目的默认设置

拿nodejs快速搭建简单Oauth认证和restful API server攻略

拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最近一直在鼓捣这个东西,拿出来分享下一下经验吧,其实很简单,一点也不难. 首先需求是这样,给自己的网站要增加API服务,API分为两种,公共的和私有授权的,授权的使用Oauth方法认证身份,API格式均为JOSN和JSONP. 嗯,别的语言我也没怎么学过,首先是找合适的框架进行实现吧.本身网站使用的e