Вопрос про конвенцию CRUD в Laravel

StalkerClasses

Новичок
В Laravel для изменения записи нужно создавать два контроллера
create >> store

Аналогично для обновления записи
edit >> update

И для удаления записей
delete >> destroy

Объясните пожалуйста зачем нужно 1 контроллер делить на два действия?
 
Последнее редактирование:

Adelf

Administrator
Команда форума
1. показать форму с кнопкой - 2. выполнить действие.
если у тебя только апишка - то первые можно не делать
 

AmdY

Пью пиво
Команда форума
И в Laravel это не нужно, ты сам решаешь как делать. Я обычно четыре первых в один экшен засовывал.
 

StalkerClasses

Новичок
Одноимённые контрлллеры вполне хорошо выглядят .

Идею понял - показать и выполнить действие.
 

StalkerClasses

Новичок
Crud описывает 4 действия над записью.

А как обычно именуется массовое редактирование, или форма+действие редактирования сортировки нескольких записей?

Как в этом случае называются контроллеры и пути к шаблонам?
 

StalkerClasses

Новичок
Post/IndexController.php
Post/CreateContoler.php
Post/EditController.php
Post/DeleteController.php
Post/Sorting/EditController.php?
 

StalkerClasses

Новичок
Спрошу по другому:

Есть вот такой способ определения который создаст маршруты:

Route::resourses('project', 'ProjectController').

Но куда положить форму редактирования сортировки нескольких записей и их обработку? Формально это уже не CRUD - а как бы дополнение к CRUD. Я пробовал создавать так:

Post/IndexController.php # шаблон index.blade.php
Post/CreateContoler.php # шаблон create.blade.php
Post/EditController.php # шаблон edit.blade.php
Post/EditSortingController.php # шаблон edit.sorting.blade.php -> но здесь он ищет шаблон как во вложенной папке
поэтому приходится называть шаблон edit-sorting.blade.php (через черточку "-")
Post/DeleteController.php # шаблон delete.blade.php

Как эту ситуацию лучше оформалять?
 

WMix

герр M:)ller
Партнер клуба
если это список, к примеру пользователи, то обычно это GET, обычно во множественном числе (user => users), обычно с фильтрами, сортировками и лимитированием через параметры в query.
Код:
GET /users.json?order=nick,asc&limit=5&search=wmix&type=admin&.....
остальное не понял.
 

StalkerClasses

Новичок
если это список, к примеру пользователи, то обычно это GET, обычно во множественном числе (user => users), обычно с фильтрами, сортировками и лимитированием через параметры в query.
Код:
GET /users.json?order=nick,asc&limit=5&search=wmix&type=admin&.....
остальное не понял.
Есть конвенция:

HTTP VerbPath (URL)Action (Method)Route Name

GET/sharksindexsharks.index

GET/sharks/createcreatesharks.create

POST/sharksstoresharks.store

GET/sharks/{id}showsharks.show

GET/sharks/{id}/editeditsharks.edit

PUT/PATCH/sharks/{id}updatesharks.update

DELETE/sharks/{id}destroysharks.destroy


app
└───views
└───sharks
│ index.blade.php
│ create.blade.php
│ show.blade.php
│ edit.blade.php


Я могу посмотреть список постов, могу посмотреть 1 пост, могу удалить 1 пост, могу создать 1 пост, могу отредактировать 1 пост.
Но если мне нужно отредактировать сортировку для нескольких постов. Т.е. я шаблоне "списка постов" добавил кнопку "Редактировать сортировку записей" - меня перекидывает на форму где показаны все записи и им можно проставить в input поля их сортировку (аналог массового редактирования). Как я должен назвать шаблоны и контроллеры к данной форме и ее обработке? В какие папки разложить?
 

WMix

герр M:)ller
Партнер клуба
Но если мне нужно отредактировать сортировку для нескольких постов.
я не понимаю этого, если сортировка должна записаться чтоб и через 5 лет значение можно было считать, то есть ресурс сортировка.
если список нужно получить в отсортированном виде, то мы говорим про список
 

StalkerClasses

Новичок
я не понимаю этого, если сортировка должна записаться чтоб и через 5 лет значение можно было считать, то есть ресурс сортировка.
если список нужно получить в отсортированном виде, то мы говорим про список
У меня два вопроса:

1) Зачем нужно разбивать "создать" и "редактировать" на два отдельных экшина - это ладно. Видимо так принято... Возможно что-то в этом есть.
2) Я создал управление категориями по CRUD-конвенции в Laravel. Но, мне что бы отредактировать 30 записей и проставить всем нужную сортировку (поле сортировки в форме) - нужно по этой конвенции 30 раз открыть на редактирование каждую запись. Что бы этого избежать я хочу создать отдельное действие которое будет показывать страницу где будут отображены 30 записей и на против них будет поле для ввода Input с номерм сортировки. На этой странице редактор расставим всем у кого какая сортировка и нажмет кнопку сохранить (получается массовое редактирование). По конвенции это уже не CRUD, а дополнение к CRUD - куда я должен положить это действие, какой маршрут будет?
 

WMix

герр M:)ller
Партнер клуба
1. CRUD это про базу, там на каждое из действий разные команды INSERT, SELECT, UPDATE, DELETE
2. Назови так, чтоб это отражало по максимуму действие которое происходит. к примеру import
если это массовое то и рута во множественном числе.
UPDATE /nodes,json
 

StalkerClasses

Новичок
Вот картинку нарисовал.

1. CRUD это про базу, там на каждое из действий разные команды INSERT, SELECT, UPDATE, DELETE
2. Назови так, чтоб это отражало по максимуму действие которое происходит. к примеру import
если это массовое то и рута во множественном числе.
UPDATE /nodes,json
Но это ломает всю суть конвенции. Я вот например сделал одноименные контроллеры. А как что назвать то, что уже выходит за эту CRUD-коненцию но также относится к управлению записями не понятно. Возможно найду ответы в Nova и Orchid ларавелях...
 

WMix

герр M:)ller
Партнер клуба
так это же ты сам поломал. не делай массовых изменений, не выйдешь за рамки.
не удобно поштучно?, ну видать ты отверткой в ухе ковыряешь, поменяй инструмент
 

StalkerClasses

Новичок
так это же ты сам поломал. не делай массовых изменений, не выйдешь за рамки.
не удобно поштучно?, ну видать ты отверткой в ухе ковыряешь, поменяй инструмент
В PhpMyAdmin вы можете выбрать и отправить на редактирование несколько записей....
И по моему даже выбрать только те колонки которые нужно.
 

AmdY

Пью пиво
Команда форума
Что у тебя за каша. Laravel это фреймворк, где ты можешь реализовывать всё как угодно. Нет там никаких стандартов. Есть простенький скарфолдинг для ресурсов, но он не обязателен, можешь делать как угодно.
Нова и Орчид это более продвинутые круд генераторы, но опять же это не стандарт и они всё делают по разному.
 
Сверху