本书未发布
3.6. 实现文档控制器
我们需要在控制器中实现文档的CRUD操作。
步骤:
- 打开
app/Http/Controllers/DocumentController.php
文件。 - 添加以下方法:
namespace App\Http\Controllers;
use App\Models\Document;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class DocumentController extends Controller {
public function index() {
$documents = Document::all();
return view('documents.index', compact('documents'));
}
public function create() {
return view('documents.create');
}
public function store(Request $request) {
$request->validate([
'name' => 'required|string|max:255',
'slug' => 'required|string|max:255|unique:documents',
'description' => 'nullable|string',
'cover_image' => 'nullable|string',
'is_chaptered' => 'boolean',
'auto_numbering' => 'boolean',
'auto_toc' => 'boolean',
'is_public' => 'boolean',
'password' => 'nullable|string',
]);
$document = new Document([
'user_id' => auth()->id(),
'name' => $request->name,
'slug' => Str::slug($request->slug),
'description' => $request->description,
'cover_image' => $request->cover_image,
'is_chaptered' => $request->is_chaptered,
'auto_numbering' => $request->auto_numbering,
'auto_toc' => $request->auto_toc,
'is_public' => $request->is_public,
'password' => $request->password,
]);
$document->save();
return redirect()->route('documents.index')->with('success', 'Document created successfully.');
}
public function show(Document $document) {
return view('documents.show', compact('document'));
}
public function edit(Document $document) {
return view('documents.edit', compact('document'));
}
public function update(Request $request, Document $document) {
$request->validate([
'name' => 'required|string|max:255',
'slug' => 'required|string|max:255|unique:documents,slug,'.$document->id,
'description' => 'nullable|string',
'cover_image' => 'nullable|string',
'is_chaptered' => 'boolean',
'auto_numbering' => 'boolean',
'auto_toc' => 'boolean',
'is_public' => 'boolean',
'password' => 'nullable|string',
]);
$document->update([
'name' => $request->name,
'slug' => Str::slug($request->slug),
'description' => $request->description,
'cover_image' => $request->cover_image,
'is_chaptered' => $request->is_chaptered,
'auto_numbering' => $request->auto_numbering,
'auto_toc' => $request->auto_toc,
'is_public' => $request->is_public,
'password' => $request->password,
]);
return redirect()->route('documents.index')->with('success', 'Document updated successfully.');
}
public function destroy(Document $document) {
$document->delete();
return redirect()->route('documents.index')->with('success', 'Document deleted successfully.');
}
}
解释:
- CRUD操作:控制器中的方法实现了文档的创建、读取、更新和删除操作。
- 请求验证:使用
validate
方法验证请求数据,确保数据的合法性。
好处:
- 逻辑清晰:每个方法处理特定的CRUD操作,逻辑清晰,便于维护。
- 数据验证:在保存数据之前进行验证,确保数据的完整性和合法性。