1. Go to this page and download the library: Download arandu/laravel-mui-admin library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Arandu\LaravelMuiAdmin\Traits\HasAdminSupport;
class Post extends Model
{
use HasAdminSupport;
protected $fillable = [
'title',
'content',
];
}
public function getWebUrls()
{
return [
'index' => 'custom/url/path',
// use este array para criar rotas web adicionais, se desejar
];
}
public function getApiUrls()
{
return [
'list' => 'custom/url/to/posts',
'item' => 'custom/url/to/posts/{id}',
'create' => [
'url' => 'custom/url/to/posts/create',
'method' => 'post',
],
'update' => [
'url' => 'custom/url/to/posts/{id}/update',
'method' => 'post',
],
'delete' => [
'url' => 'custom/url/to/posts/{id}/delete',
'method' => 'delete',
],
// Se o modelo tiver o trait SoftDeletes, adicione o seguinte também:
// 'restore' => [
// 'url' => 'custom/url/to/posts/{id}/restore',
// 'method' => 'post',
// ],
// 'forceDelete' => [
// 'url' => 'custom/url/to/posts/{id}/force-delete',
// 'method' => 'delete',
// ],
// use este array para criar rotas api adicionais, se desejar
// porém será necessário criar os métodos correspondentes no controller
// e registrar a controller na configuração 'admin.cms.controller_overrides'
];
}
class Post extends Model
{
public function user(): BelongsTo # ou : HasMany, : HasOne, etc.
{
return $this->belongsTo(User::class);
}
}
namespace App\Admin\Tables;
use Arandu\LaravelMuiAdmin\Contracts\Table;
class PostTable extends Table
{
public function default()
{
return [
[
// 'key' é o nome do atributo no modelo
'key' => 'title',
// 'label' é o texto que será exibido na coluna
'label' => __('Title'),
],
[
// Você pode utilizar o ponto para acessar atributos aninhados
'key' => 'author.name',
'label' => __('Author Name'),
],
[
// Você pode criar colunas personalizadas para serem
// gerenciadas posteriormente no frontend
'key' => 'categories',
'label' => __('Categories'),
]
];
}
}
namespace App\Admin\Forms;
use Arandu\LaravelMuiAdmin\Contracts\Form;
class PostForm extends Form
{
public function default()
{
return [
[
// 'name' é o nome do atributo no modelo
'name' => 'title',
// 'label' é o texto que será exibido no campo
'label' => __('Title'),
// 'type' é o tipo do campo, por padrão é 'text'
'type' => 'text',
// parâmetros adicionais serão passados para o componente
'id`)
// esteja no array `$fillable` do modelo Post.
[
'name' => 'author',
'label' => __('Author'),
'type' => 'autocomplete',
// O autocomplete irá listar itens
// da model relacionada, por padrão.
// É possível também fornecer resultados personalizados
// para a listagem do autocomplete, ex:
// 'list' => function ($search) {
// return User::role('author')->search($search)->get(['id', 'name']);
// }
]
];
}
}
public function scopeWhereBelongsToTab($query, $tab)
{
if ($tab === 'published') {
$query->where('published', true);
}
}
public function scopeSearch($query, $search)
{
$query->where(function ($query) use ($search) {
$query->where('title', 'like', "%{$search}%");
$query->orWhereHas('author', function ($query) use ($search) {
$query->where('name', 'like', "%{$search}%");
});
});
}