增加 Request
php artisan make:request Api/TopicRequest
如下修改:
app/Http/Requests/Api/TopicRequest.php
<?php
namespace App\Http\Requests\Api;
class TopicRequest extends FormRequest
{
public function rules()
{
return [
'title' => 'required|string',
'body' => 'required|string',
'category_id' => 'required|exists:categories,id',
];
}
public function attributes()
{
return [
'title' => '标题',
'body' => '话题内容',
'category_id' => '分类',
];
}
}
增加 Resource
php artisan make:resource TopicResource
如下修改:
app/Http/Resources/TopicResource.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class TopicResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'body' => $this->body,
'category_id' => (int)$this->category_id,
'user_id' => (int)$this->user_id,
'reply_count' => (int)$this->reply_count,
'view_count' => (int)$this->view_count,
'last_reply_user_id' => (int)$this->last_reply_user_id,
'order' => (int)$this->order,
'excerpt' => $this->excerpt,
'slug' => $this->slug,
'created_at' => (string) $this->created_at,
'updated_at' => (string) $this->updated_at,
];
}
}
增加 Controller
php artisan make:controller Api/TopicsController
修改文件
app/Http/Controllers/Api/TopicsController.php
<?php
namespace App\Http\Controllers\Api;
use App\Models\Topic;
use Illuminate\Http\Request;
use App\Http\Resources\TopicResource;
use App\Http\Requests\Api\TopicRequest;
class TopicsController extends Controller
{
public function store(TopicRequest $request, Topic $topic)
{
$topic->fill($request->all());
$topic->user_id = $request->user()->id;
$topic->save();
return new TopicResource($topic);
}
}