PHPackages                             arandu/laravel-mui-admin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. arandu/laravel-mui-admin

ActiveLibrary[Admin Panels](/categories/admin)

arandu/laravel-mui-admin
========================

A highly customizable CMS for Laravel, built with React and Material UI.

v0.5.0(2y ago)61.1k2MITPHPPHP ^8.0

Since Sep 21Pushed 2y ago1 watchersCompare

[ Source](https://github.com/AranduTech/laravel-mui-admin)[ Packagist](https://packagist.org/packages/arandu/laravel-mui-admin)[ RSS](/packages/arandu-laravel-mui-admin/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (1)Dependencies (10)Versions (21)Used By (0)

Laravel MUI Admin
=================

[](#laravel-mui-admin)

Um CMS orientado a modelos, altamente personalizável para Laravel 8.x, com um conjunto de ferramentas fullstack para desenvolvimento ágil de aplicações web.

Construído com [Material-UI](https://mui.com/material-ui) e [React](https://react.dev/)

[English docs](README_en.md)

> **Nota:** Este pacote ainda está em desenvolvimento. Podem ocorrer mudanças significativas na API até a versão 1.0.0.

Template
--------

[](#template)

Disponibilizamos um template para iniciar um projeto com este pacote. \[Clique aqui\]({{LINK AQUI}})

Caso deseje realizar a instalação manual, veja a [documentação de instalação](./docs/instalacao.md)

Uso Básico
==========

[](#uso-básico)

- Criar os papéis iniciais
- Criar um novo usuário administrador
- Renderizando o painel administrativo
- Preparando um modelo para o painel administrativo
    - Adicionando o trait `HasAdminSupport`
    - Os modelos eloquent do frontend
    - Personalização
        - Personalize as colunas da página do modelo
        - Adicionando campos personalizados
        - Adicionando abas personalizadas
        - Adicionando pesquisa personalizada

Criar os papéis iniciais
------------------------

[](#criar-os-papéis-iniciais)

Para criar os papéis iniciais, adicione o seeder `RolesAndPermissionsSeeder` ao arquivo `DatabaseSeeder`. Exemplo:

```
    $this->call([
        // ...
        RolesAndPermissionsSeeder::class,
    ]);
```

Em seguida, execute as classes de seeder com o seguinte comando:

```
php artisan db:seed
```

Alternativamente, você pode executar o seguinte comando para semear apenas as funções e permissões:

```
php artisan db:seed --class=RolesAndPermissionsSeeder
```

Criar as permissões para novos modelos
--------------------------------------

[](#criar-as-permissões-para-novos-modelos)

Durante o desenvolvimento, você pode criar novos modelos que precisam de permissões para serem acessados. Para atualizar a lista de permissões da aplicação, execute o seguinte comando:

```
php artisan admin:permissions
```

Criar um novo usuário administrador
-----------------------------------

[](#criar-um-novo-usuário-administrador)

Para criar um novo usuário administrador, execute o seguinte comando:

```
php artisan admin:credentials
```

Este comando perguntará por um nome de usuário, e-mail e senha, e criará um novo usuário com o papel de `admin`.

Preparando um modelo para o painel administrativo
-------------------------------------------------

[](#preparando-um-modelo-para-o-painel-administrativo)

Para preparar um modelo para o painel administrativo, você precisa adicionar o trait `HasAdminSupport` a ele. Esse trait adicionará os métodos necessários ao modelo para fazê-lo funcionar com o painel administrativo.

Além disso, você deve ter a propriedade `$fillable` configurada no modelo. Esta propriedade é usada para informar ao frontend quais campos podem ser preenchidos, e também é usada para renderizar as colunas da página do modelo. Você pode personalizar os campos e as colunas, conforme veremos adiante.

### Adicionando o trait `HasAdminSupport`

[](#adicionando-o-trait-hasadminsupport)

```
use Arandu\LaravelMuiAdmin\Traits\HasAdminSupport;

class Post extends Model
{
    use HasAdminSupport;

    protected $fillable = [
        'title',
        'content',
    ];
}
```

Após adicionar o trait, deve haver uma rota correspondente ao nome do modelo em plural e snake case. Por exemplo, se o modelo se chama `Post`, a rota deve ser `/posts`. Se o modelo se chama `BlogPost`, a rota deve ser `/blog_posts`. Adicione um link no menu lateral alterando o arquivo `resources/js/src/views/Layouts/Admin.jsx`:

```
import { NavLink } from 'react-router-dom';
import { route } from '@arandu/laravel-mui-admin';

const navMenuItems = [
    // ...
    {
        key: 3,
        text: 'Posts',
        icon: 'posts',
        ListItemButtonProps: {
            component: NavLink,
            to: route('admin.post.index'),
        },
    },
]
```

Observe que a função `route` é usada para obter um caminho de rota a partir de seu nome. Após adicionar o trait `HasAdminSupport` ao modelo, as seguintes rotas estão disponíveis:

- WEB:
    - `admin.{model_name}.index`: A página do modelo
- API:
    - `admin.{model_name}.list`: Obter uma lista paginada de modelos
    - `admin.{model_name}.create`: Criar um novo modelo
    - `admin.{model_name}.item`: Obter um modelo por id
    - `admin.{model_name}.update`: Atualizar um modelo por id
    - `admin.{model_name}.delete`: Excluir um modelo por id

Se o modelo tiver o trait `SoftDeletes`, as seguintes rotas também estão disponíveis:

- API:
    - `admin.{model_name}.restore`: Restaurar um modelo por id
    - `admin.{model_name}.forceDelete`: Excluir definitivamente um modelo por id

Se você quiser personalizar as rotas, pode fazê-lo adicionando os seguintes métodos ao modelo:

```
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'
    ];
}
```

#### Nota sobre relacionamentos

[](#nota-sobre-relacionamentos)

Devido aos modelos de frontend, este pacote verifica cada relacionamento que existe no modelo "backend". Para fazer isso funcionar, os métodos de relacionamento devem ser definidos no modelo com dicas de tipo. Por exemplo:

```
class Post extends Model
{
    public function user(): BelongsTo # ou : HasMany, : HasOne, etc.
    {
        return $this->belongsTo(User::class);
    }
}
```

Isso desbloqueará algumas funcionalidades, como sincronização de relacionamentos, e também permitirá que o frontend carregue os modelos relacionados automaticamente.

### Personalização

[](#personalização)

#### Personalizar as colunas da página do modelo

[](#personalizar-as-colunas-da-página-do-modelo)

Por padrão, o componente `RepositoryIndex` renderizará uma tabela com colunas correspondentes à propriedade `$fillable` do modelo. Se você quiser personalizar as colunas, deve criar uma classe em seu projeto em `app/Admin/Tables/{$model}Table.php`. Por exemplo, se o modelo é chamado `Post`, a classe deve ser chamada `PostTable`.

A classe criada deve ter pelo menos um método chamado `default`, que será usado quando nenhum outro método for especificado. Por exemplo, se você quiser personalizar as colunas para o modelo `Post`, deve criar uma classe em `app/Admin/Tables/PostTable.php` com o seguinte conteúdo:

```
