Большинство моих контроллеров в laravel выглядят одинаково
Пример:
class CourseController extends Controller
{
public function index(Request $request)
{
$courses = Course::query();
$courses = $this->commonIndex($courses, $request);
return CourseResource::collection($courses);
}
public function store(StoreCourseRequest $request)
{
$course = Course::create($request->validated);
return CourseResource::make($course);
}
public function show(Request $request, Course $course)
{
return CourseResource::make($course);
}
public function update(UpdateCourseRequest $request, Course $course)
{
$course->update($request->validated());
return CourseResource::make($course);
}
public function destroy(Course $course)
{
$course->delete();
return response()->noContent();
}
}
Я хотел бы создать общий контроллер, который расширяется всеми простыми контроллерами и передает Model, FormRequest и Resource как общедоступные переменные. что-то вроде этого.
class CommonController extends BaseController
{
use AuthorizesRequests, ValidatesRequests;
public $model;
public $resource;
public $storeFormRequest;
public $updateFormRequest;
public function index(Request $request)
{
$model = new $this->model;
$resource = new $this->resource($request);
$data = $model->query();
return $resource->collection($data);
}
public function show(Request $request, string $id)
{
$model = new $this->model;
$resource = new $this->resource($request);
$data = $model->find($id);
return $resource->make($data->load($loadWith));
}
public function store(Request $request)
{
$model = new $this->model;
$resource = new $this->resource($request);
$request = new $this->storeFormRequest($request->toArray());
$validated = $request->validated();
$data = $model->create($validated);
return $resource->make($data);
}
}
Я не знаю, как лучше всего передать общедоступные переменные конструктору и оценить их.
Кроме того, я столкнулся с проблемой где new $this->storeFormRequest($request->toArray()) имеет значение null.
$storeFormRequest — это стандартный запрос FormRequest laravel
$storeFormRequest code>
class StoreCourseRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'name' => 'required|string',
'description' => 'required|string',
'language_id' => 'required|exists:languages,id',
'image' => 'array',
];
}
}
Вот как я использую CommonController
class CourseController extends CommonController
{
public $model = Course::class;
public $resource = CourseResource::class;
public $storeFormRequest = StoreCourseRequest::class;
public $updateFormRequest = StoreCourseRequest::class;
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... in-laravel
Создание CommonController в laravel ⇐ Php
Кемеровские программисты php общаются здесь
1719910032
Anonymous
Большинство моих контроллеров в laravel выглядят одинаково
Пример:
class CourseController extends Controller
{
public function index(Request $request)
{
$courses = Course::query();
$courses = $this->commonIndex($courses, $request);
return CourseResource::collection($courses);
}
public function store(StoreCourseRequest $request)
{
$course = Course::create($request->validated);
return CourseResource::make($course);
}
public function show(Request $request, Course $course)
{
return CourseResource::make($course);
}
public function update(UpdateCourseRequest $request, Course $course)
{
$course->update($request->validated());
return CourseResource::make($course);
}
public function destroy(Course $course)
{
$course->delete();
return response()->noContent();
}
}
Я хотел бы создать общий контроллер, который расширяется всеми простыми контроллерами и передает Model, FormRequest и Resource как общедоступные переменные. что-то вроде этого.
class CommonController extends BaseController
{
use AuthorizesRequests, ValidatesRequests;
public $model;
public $resource;
public $storeFormRequest;
public $updateFormRequest;
public function index(Request $request)
{
$model = new $this->model;
$resource = new $this->resource($request);
$data = $model->query();
return $resource->collection($data);
}
public function show(Request $request, string $id)
{
$model = new $this->model;
$resource = new $this->resource($request);
$data = $model->find($id);
return $resource->make($data->load($loadWith));
}
public function store(Request $request)
{
$model = new $this->model;
$resource = new $this->resource($request);
$request = new $this->storeFormRequest($request->toArray());
$validated = $request->validated();
$data = $model->create($validated);
return $resource->make($data);
}
}
Я не знаю, как лучше всего передать общедоступные переменные конструктору и оценить их.
Кроме того, я столкнулся с проблемой где new $this->storeFormRequest($request->toArray()) имеет значение null.
$storeFormRequest — это стандартный запрос FormRequest laravel
$storeFormRequest code>
class StoreCourseRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'name' => 'required|string',
'description' => 'required|string',
'language_id' => 'required|exists:languages,id',
'image' => 'array',
];
}
}
Вот как я использую CommonController
class CourseController extends CommonController
{
public $model = Course::class;
public $resource = CourseResource::class;
public $storeFormRequest = StoreCourseRequest::class;
public $updateFormRequest = StoreCourseRequest::class;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78695900/making-a-commoncontroller-in-laravel[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия