Команда «php artisan make:controller photocontroller –resource» используется в Laravel, PHP-фреймворке, для создания контроллера под названием «PhotoController» с помощью изобретательных методов.
Находчивые контроллеры в Laravel обычно предоставляют следующие методы:
-
index: этот метод извлекает и отображает коллекцию ресурсов.
public function index() { $photos = Photo::all(); return view('photos.index', ['photos' => $photos]); } -
create: этот метод отображает форму для создания нового ресурса.
public function create() { return view('photos.create'); } -
store: этот метод сохраняет новый ресурс в базе данных.
public function store(Request $request) { // Validate and store the submitted data $validatedData = $request->validate([ 'title' => 'required', 'image' => 'required|image', ]); $photo = new Photo; $photo->title = $validatedData['title']; // Save the uploaded image and set the path in the database $photo->image = $request->file('image')->store('photos'); $photo->save(); return redirect()->route('photos.index'); } -
show: этот метод отображает определенный ресурс.
public function show(Photo $photo) { return view('photos.show', ['photo' => $photo]); } -
edit: этот метод отображает форму для редактирования определенного ресурса.
public function edit(Photo $photo) { return view('photos.edit', ['photo' => $photo]); } -
обновление: этот метод обновляет определенный ресурс в базе данных.
public function update(Request $request, Photo $photo) { // Validate and update the submitted data $validatedData = $request->validate([ 'title' => 'required', 'image' => 'image', ]); $photo->title = $validatedData['title']; // Update the image if a new one is provided if ($request->hasFile('image')) { Storage::delete($photo->image); $photo->image = $request->file('image')->store('photos'); } $photo->save(); return redirect()->route('photos.index'); } -
destroy: этот метод удаляет определенный ресурс из базы данных.
public function destroy(Photo $photo) { Storage::delete($photo->image); $photo->delete(); return redirect()->route('photos.index'); }