![]()
WARNING You're browsing the documentation for an upcoming version of Laravel DataTables. The documentation and features of this release are subject to change.
DataTables Editor Command
Introduction
Artisan is the command-line interface included with Laravel. It provides a number of helpful commands that can assist you while you build your application. To view a list of all available Artisan commands, you may use the list command:
php artisan list
Editor Command
php artisan datatables:editor {name}
Editor Command Options
--model: The name given will be used as the model is singular form.--model-namespace: The namespace of the model to be used.
Creating a DataTables Editor class
In this example, we will create a DataTable Editor class.
php artisan datatables:editor Posts
This will create a PostsDataTableEditor class on app\DataTables directory.
namespace App\DataTables; use Illuminate\Database\Eloquent\Model;use Illuminate\Validation\Rule;use Yajra\DataTables\DataTablesEditor;use App\User; class PostsDataTableEditor extends DataTablesEditor{ protected $model = User::class; /** * Get create action validation rules. * * @return array */ public function createRules() { return [ 'email' => 'required|email', 'name' => 'required', ]; } /** * Get edit action validation rules. * * @param Model $model * @return array */ public function editRules(Model $model) { return [ 'email' => 'sometimes|required|email|' . Rule::unique($model->getTable())->ignore($model->getKey()), 'name' => 'sometimes|required', ]; } /** * Get remove action validation rules. * * @param Model $model * @return array */ public function removeRules(Model $model) { return []; }}
Model Option
In this example, we will pass a --model option to set the model to be used by our DataTable.
php artisan datatables:editor Posts --model
This will generate a App\DataTables\PostsDataTable class that uses App\Post as the base model for our query.
The exported filename will also be set to posts_(timestamp).
namespace App\DataTables; use Illuminate\Database\Eloquent\Model;use Illuminate\Validation\Rule;use Yajra\DataTables\DataTablesEditor;use App\Post; class PostsDataTableEditor extends DataTablesEditor{ protected $model = Post::class; /** * Get create action validation rules. * * @return array */ public function createRules() { return [ 'email' => 'required|email', 'name' => 'required', ]; } /** * Get edit action validation rules. * * @param Model $model * @return array */ public function editRules(Model $model) { return [ 'email' => 'sometimes|required|email|' . Rule::unique($model->getTable())->ignore($model->getKey()), 'name' => 'sometimes|required', ]; } /** * Get remove action validation rules. * * @param Model $model * @return array */ public function removeRules(Model $model) { return []; }}
Model Namespace Option
In this example, we will pass a --model-namespace option to set the model namespace to be used by our DataTable.
php artisan datatables:editor Posts --model-namespace="Entities"
It will implicitly activate --model option and override the model parameter in datatables-buttons config file.
This will allow to use a non-standard namespace if front-end and back-end models are in separate namespace for example.