发布回复
This commit is contained in:
parent
46304b7935
commit
ad94cc05dd
62
app/Http/Controllers/RepliesController.php
Normal file
62
app/Http/Controllers/RepliesController.php
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Requests\ReplyRequest;
|
||||||
|
use App\Models\Reply;
|
||||||
|
|
||||||
|
class RepliesController extends Controller
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->middleware('auth', ['except' => ['index', 'show']]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$replies = Reply::paginate();
|
||||||
|
return view('replies.index', compact('replies'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function show(Reply $reply)
|
||||||
|
{
|
||||||
|
return view('replies.show', compact('reply'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function create(Reply $reply)
|
||||||
|
{
|
||||||
|
return view('replies.create_and_edit', compact('reply'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(ReplyRequest $request)
|
||||||
|
{
|
||||||
|
$reply = new Reply();
|
||||||
|
$reply->setAttribute('topic_id', $request->get('topic_id'));
|
||||||
|
$reply->setAttribute('user_id', \Auth::id());
|
||||||
|
$reply->setAttribute('content', $request->get('content'));
|
||||||
|
$reply->save();
|
||||||
|
return redirect()->back()->with('success', '回复成功.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function edit(Reply $reply)
|
||||||
|
{
|
||||||
|
$this->authorize('update', $reply);
|
||||||
|
return view('replies.create_and_edit', compact('reply'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(ReplyRequest $request, Reply $reply)
|
||||||
|
{
|
||||||
|
$this->authorize('update', $reply);
|
||||||
|
$reply->update($request->all());
|
||||||
|
|
||||||
|
return redirect()->route('replies.show', $reply->id)->with('message', 'Updated successfully.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy(Reply $reply)
|
||||||
|
{
|
||||||
|
$this->authorize('destroy', $reply);
|
||||||
|
$reply->delete();
|
||||||
|
|
||||||
|
return redirect()->back()->with('success', '删除成功.');
|
||||||
|
}
|
||||||
|
}
|
50
app/Http/Requests/ReplyRequest.php
Normal file
50
app/Http/Requests/ReplyRequest.php
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests;
|
||||||
|
|
||||||
|
class ReplyRequest extends Request
|
||||||
|
{
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
switch ($this->method()) {
|
||||||
|
// CREATE
|
||||||
|
case 'POST':
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'content' => 'required|max:255',
|
||||||
|
'topic_id' => 'required|integer'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
// UPDATE
|
||||||
|
case 'PUT':
|
||||||
|
case 'PATCH':
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
// UPDATE ROLES
|
||||||
|
];
|
||||||
|
}
|
||||||
|
case 'GET':
|
||||||
|
case 'DELETE':
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return [];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
// Validation messages
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function attributes()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'content' => '回复内容',
|
||||||
|
'topic_id' => '回复的主题'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,11 +11,16 @@ class ReplyObserver
|
||||||
{
|
{
|
||||||
public function creating(Reply $reply)
|
public function creating(Reply $reply)
|
||||||
{
|
{
|
||||||
//
|
$reply->setAttribute('content', clean($reply->getAttribute('content'), 'user_topic_body'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updating(Reply $reply)
|
public function updating(Reply $reply)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function created(Reply $reply)
|
||||||
|
{
|
||||||
|
$reply->topic->increment('reply_count', 1);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -2,7 +2,9 @@
|
||||||
|
|
||||||
namespace App\Providers;
|
namespace App\Providers;
|
||||||
|
|
||||||
|
use App\Models\Reply;
|
||||||
use App\Models\Topic;
|
use App\Models\Topic;
|
||||||
|
use App\Observers\ReplyObserver;
|
||||||
use App\Observers\TopicObserver;
|
use App\Observers\TopicObserver;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
@ -18,6 +20,7 @@ class AppServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
Carbon::setLocale('zh');
|
Carbon::setLocale('zh');
|
||||||
Topic::observe(new TopicObserver());
|
Topic::observe(new TopicObserver());
|
||||||
|
Reply::observe(new ReplyObserver());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
@include('common.error')
|
||||||
|
<div class="reply-box">
|
||||||
|
<form action="{{ route('replies.store') }}" method="POST" accept-charset="UTF-8">
|
||||||
|
<input type="hidden" name="_token" value="{{ csrf_token() }}">
|
||||||
|
<input type="hidden" name="topic_id" value="{{ $topic->id }}">
|
||||||
|
<div class="form-group">
|
||||||
|
<textarea class="form-control" rows="3" placeholder="分享你的想法" name="content"></textarea>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-primary btn-sm"><i class="fa fa-share"></i>回复</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<hr>
|
|
@ -67,7 +67,7 @@
|
||||||
{{-- 用户回复列表 --}}
|
{{-- 用户回复列表 --}}
|
||||||
<div class="panel panel-default topic-reply">
|
<div class="panel panel-default topic-reply">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
@include('topics._reply_box', ['topic' => $topic])
|
@includeWhen(Auth::check(),'topics._reply_box', ['topic' => $topic])
|
||||||
@include('topics._reply_list', ['replies' => $topic->replies()->with('user')->get()])
|
@include('topics._reply_list', ['replies' => $topic->replies()->with('user')->get()])
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -38,4 +38,4 @@ Route::resource('categories', 'CategoriesController', ['only' => ['show']]);
|
||||||
Route::post('upload_image', 'TopicsController@uploadImage')->name('topics.upload_image');
|
Route::post('upload_image', 'TopicsController@uploadImage')->name('topics.upload_image');
|
||||||
|
|
||||||
|
|
||||||
Route::resource('replies', 'RepliesController', ['only' => ['index', 'show', 'create', 'store', 'update', 'edit', 'destroy']]);
|
Route::resource('replies', 'RepliesController', ['only' => ['store', 'destroy']]);
|
Loading…
Reference in New Issue
Block a user