You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It feels a bit odd to me to define the validation rules in a different file, when everything else is defined in the CrudResource.
How I see it implemented
Starting with Backpack v5, we have three ways of adding validation rules, one way being directly on the fields. I see THAT as being the most useful if you're defining a CrudRequest. But I'd also expect to be able to define validationRules() and validationMessages() on the CrudResource... maybe... I don't know...
The end result, to me, could look something like:
class BookCrudResource extends CrudResource
{
publicfunctionfields(): array
{
return [
Text::make('Name')->size(9)->validationRules('required'), // should already work, I think
Number::make('Year')->size(3)->required(), // alias, todo maybe
Textarea::make('Description')->onlyOnForms(),
Text::make('ISBN'),
];
}
}
or like this:
class BookCrudResource extends CrudResource
{
publicfunctionfields(): array
{
return [
Text::make('Name')->size(9)->validationRules('required'), // should already work, I think
Number::make('Year')->size(3)->required(), // alias, todo maybe
Textarea::make('Description')->onlyOnForms(),
Text::make('ISBN'),
];
}
publicfunctionvalidationRules(): array
{
// devs could test the operation here, and do stuff depending on the operation name// eg: if ($this->crud->operation == 'update') { change_a_rule(); }return [
'isbn' => 'required|string|unique:books,isbn',
'name' => 'required|string',
'description' => 'nullable|string',
'year' => 'required|integer',
];
}
// public function validationMessages(): array { return []; }
}
This should clean up the CrudController a bit, so that... ideally, you don't have to do ANYTHING inside the setupXxxOperation() method (more on that in a separate issue).
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Requests\BookRequest;
use App\CrudResources\BookCrudResource;
use Backpack\CRUD\app\Http\Controllers\CrudController;
use Backpack\CRUD\app\Library\CrudPanel\CrudPanelFacade as CRUD;
/**
* Class BookCrudController
* @package App\Http\Controllers\Admin
* @property-read \Backpack\CRUD\app\Library\CrudPanel\CrudPanel $crud
*/
class BookCrudController extends CrudController
{
use \Backpack\CRUD\app\Http\Controllers\Operations\ListOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\CreateOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\UpdateOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
use \Backpack\CRUD\app\Http\Controllers\Operations\ShowOperation;
private BookCrudResource $crudResource;
/**
* Configure the CrudPanel object. Apply settings to all operations.
*
* @return void
*/
public function setup()
{
CRUD::setModel(\App\Models\Book::class);
CRUD::setRoute(config('backpack.base.route_prefix') . '/book');
CRUD::setEntityNameStrings('book', 'books');
$this->crudResource = new BookCrudResource($this->crud);
}
/**
* Define what happens when the List operation is loaded.
*
* @see https://backpackforlaravel.com/docs/crud-operation-list-entries
* @return void
*/
protected function setupListOperation()
{
$this->crudResource->buildList();
}
/**
* Define what happens when the Create operation is loaded.
*
* @see https://backpackforlaravel.com/docs/crud-operation-create
* @return void
*/
protected function setupCreateOperation()
{
- CRUD::setValidation(BookRequest::class);-
$this->crudResource->buildCreateForm();
}
/**
* Define what happens when the Update operation is loaded.
*
* @see https://backpackforlaravel.com/docs/crud-operation-update
* @return void
*/
protected function setupUpdateOperation()
{
- CRUD::setValidation(BookRequest::class);-
$this->crudResource->buildUpdateForm();
}
}
The text was updated successfully, but these errors were encountered:
Feature Request
What I am trying to achieve
It feels a bit odd to me to define the validation rules in a different file, when everything else is defined in the CrudResource.
How I see it implemented
Starting with Backpack v5, we have three ways of adding validation rules, one way being directly on the fields. I see THAT as being the most useful if you're defining a CrudRequest. But I'd also expect to be able to define
validationRules()
andvalidationMessages()
on the CrudResource... maybe... I don't know...The end result, to me, could look something like:
or like this:
This should clean up the CrudController a bit, so that... ideally, you don't have to do ANYTHING inside the
setupXxxOperation()
method (more on that in a separate issue).The text was updated successfully, but these errors were encountered: