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
php artisan datatables:editor {name}
--model
: The name given will be used as the model is singular form.--model-namespace
: The namespace of the model to be used.
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 [];
}
}
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 [];
}
}
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.