Outils pour utilisateurs

Outils du site


devweb:laravel:exception (lu 7577 fois)

Exception

Pour éviter les multiples codes du style

    public function show($id){
        $mymodel = MyModel::find($id);
        if(is_null($mymodel))
            return to_route('dashboard')->with('flash_error', "Erreur : le model n'existe pas.");

On peut factoriser le truc avec une exception

php artisan make:exception MyModelNotFoundException
<?php
 
namespace App\Exceptions;
 
use Exception;
 
class MyModelNotFoundException extends Exception
{
    // public function __construct($message = null, $code = 0)
    // {
    //     if (!$message) {
    //         throw new $this('Unknown '. get_class($this));
    //     }
    //     parent::__construct($message, $code);
    // }
 
    public function render($request)
    {
        return to_route('dashboard')->with('flash_error',$this->getMessage());
    }
}

Dans le model on rajoute une methode static

public static function getFind($id){
        $mymodel = MyModel::find($id);
        if(is_null($mymodel))
                throw new MyModelNotFoundException("Erreur : le model n'existe pas.");

Et le code devient maintenant plus simple

    public function show($id){
        $mymodel = MyModel::getFind($id);
devweb/laravel/exception.txt · Dernière modification: 29-11-2023 22:51 de edmc73