ldc-groupe/docs/CRUD.md
2026-03-09 16:01:29 +01:00

2.2 KiB

Introduction

Cette documentation est destinée à décrire le fonctionnement des CRUDs dans un projet Laravel avec notre environnement de développement.

TODO: mettre en place une commande pour création de CRUD en alimentant cette doc.

Table des matières

pour chaque, définir la convention de nommage (pluriel/singulier/pascalCase)

Migration

table lié à un modèle

Model

use App\Traits\Models\HasCache;
use App\Traits\Models\HasTranslations;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Uwil\LaravelActivityLogs\Traits\ActivityLog;

class NomDuModel extends Model implements TranslatableModel
{
    use ActivityLog;
    use HasCache;
    use HasFactory;
    use HasTranslations;
    use SoftDeletes;
    ...
    /**
     * The translatable columns.
     *
     * @var list<string>
     */
    public $translatable = [
        'label',
        'content',
    ];
    ...
}

Policy

  • viewAny,
  • viewTrash,
  • view,
  • create,
  • update,
  • duplicate,
  • restore,
  • delete,
  • forceDelete,
/**
 * Determine whether the user can view any models.
 *
 * @param \Illuminate\Database\Eloquent\Model $authModel
 * @return boolean
 */
public function action(Model $authModel): bool
{
    return UserStaticRules::atLeastRole($authModel, RoleEnum::conceptor);
}
'auth' => [
    ...
    'policies' => [
        'dynamicPages' => [
            'viewAny'   => Gate::allows('viewAny', DynamicPage::class),
            'viewTrash' => Gate::allows('viewTrash', DynamicPage::class),
            'create'    => Gate::allows('create', DynamicPage::class),
        ],
        'pageConfigs'  => [
            'viewAny'   => Gate::allows('viewAny', PageConfig::class),
            'viewTrash' => Gate::allows('viewTrash', PageConfig::class),
            'create'    => Gate::allows('create', PageConfig::class),
        ],
    ...
    ],
],