• Avatar de MourareauMathieu
    Membre depuis :
    20/01/2017
    Messages :
    55

    Bonjours à tous , j'aimerai passer des paramètres dans mon menu AdminLTE mais je ne trouve pas la solution .

    Je possède un ficher adminlte.php situé dans config pour crée on menu avec Admin LTE

    voici une partie du menu

    [
    'header' => 'LICENCES',
    'can' => 'club'
    ],
    [
    'text' => 'Ajouter une licence ',
    'url' => '#',
    'icon' => 'list-ul',
    'can' => 'club',
    'submenu' => [
    [
    'text' => 'Licences Professionnelles',
    'icon' => 'product-hunt',
    'url' => 'licencie-joueur-pro',
    'can' =>'club',
    ],
    [
    'text' => 'Licences Amateurs',
    'icon' => 'address-card-o',
    'url' => 'licencie-joueur-amateur',
    'can' =>'club',
    ],
    [
    'text' => 'Licences Loisirs',
    'icon' => 'flag',
    'url' => 'licencie-joueur-loisir',
    'can' =>'club',
    ],
    ],
    ],

    j'aimerai dans la ligne URL pouvoir passer en paramètre une resource imbriqué qui prend en paramettre l'id du club .

    comme ici , dans une vue Blade qui fonctionne parfaitement .
    {!! link_to_route('club.licenciejoueurpro.create', 'Licence Joueur Compétition Pro', [$club->id], ['class' => 'btn btn-default']) !!}

    merci d'avance

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1184

    Bonsoir,

    Si c'est le package de jeroennoten qui est utilisé, il y a l'explication dans sa documentation sur Github dans le chapitre Menu configuration at runtime.

  • Avatar de mattminimal
    Membre depuis :
    21/01/2017
    Messages :
    8

    bonsoir , merci pour ta réponse Bestmomo . J'utilise bien se package .

    j'ai regarder la doc une fois de plus du coup et j'ai crée la function boot suivante dans ma AppServiceProdivers

    public function boot(Dispatcher $events)
    {
    $events->listen(BuildingMenu::class, function (BuildingMenu $event) {
    $event->menu->add('Test');
    $event->menu->add([
    'text' => 'Ajouter une licence Pro',
    'url' => route ('club.licenciejoueurpro.create' , Auth::user()->structure->club->id) ,
    'can' => 'club',
    ]);
    });
    }
    ça marche sauf que quand je me connecter avec une strucutre qui ne possède pas de club je tombe sur un Try to Get property of non-object bien évidement étant donner que certaines structures ne possèdent pas de clubs

    j'aimerai pouvoir faire directement dans menu config adminlte un truc de genre :

    'submenu' => [
    [
    'text' => 'Ajouter une licence Pro',
    'icon' => 'plus-square-o',
    'url' => route ('club.licenciejoueurpro.create' , Auth::user()->structure->club->id) ,
    'can' =>'club'
    ],

    cela ne fonctionne pas malheuresement je dois pas bien comprendre le principe

  • Avatar de Romu
    Membre depuis :
    23/02/2017
    Messages :
    18

    Salut,

    Si j'ai mal compris le problème je m'en excuse d'avance :)

    Mais ...Je ne suis pas sur que ce soit lié a adminLTE, mais plutot au fait que tu essayes d'accéder à une ressource qui n'existe pas via

    Auth::user()->structure->club->id

    Comme tu l'as fais remarqué

    bien évidement étant donner que certaines structures ne possèdent pas de clubs

    Du coup normal que ça te retourne une erreur .. faudrait pas plutot regarder de ce coté là ?
    Du genre est ce que une structure sans club peut ajouter une licence pro ?

  • Avatar de MourareauMathieu
    Membre depuis :
    20/01/2017
    Messages :
    55

    Salut Romu !

    Alors avec :
    Auth::user()->structure->club->id

    le menu s'affiche sans accombre quand la structure possède un club et quand la structure connecté ne possède pas de club j'obtient un Try to get property of non-object évidement

    cependant j'ai bien ajouté 'can' => 'club', dans le menu . qui faire référence à une gate dans AuthServiceProvider . du coup si l'utilisateur n'est pas isClub alors on affiche rien . mais la en l'occurence il cherche quand même l'object même si l'utilisateur n'est pas club ...

    Gate::define('club' , function (User $user){

    return $user->isClub();

    });

    Qui fait refèrence à la function dans mon model User

    public function isClub(){

    if($this->type_structure->libelle_type == "Club") {

    return true ;
    }

    return false ;
    }
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1184

    Il faudrait peut-être ajouter un test d'existence dans la config, sans doute celle-ci est lue avant le traitement des droits.

  • Avatar de MourareauMathieu
    Membre depuis :
    20/01/2017
    Messages :
    55

    Bonjour bestmomo , c'est à dire un test d'existence ?

    j'ai essayé : ( mais j'obtient un try to get property of non object )


    public function boot(Dispatcher $events)
    {
    if(!Auth::user()->structure->club->isEmpty()) {

    $events->listen(BuildingMenu::class, function (BuildingMenu $event) {
    $event->menu->add([
    'text' => 'Ajouter une licence Pro',
    'url' => route('club.licenciejoueurpro.create', Auth::user()->structure->club->id),
    'can' => 'club',
    ]);
    });

    }else {

    //

    }

    }

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1184

    Oui normal qu'il aime pas comme ça, je vois plutôt cette approche :

    if(Auth::user()->structure->has('club')->count())
  • Avatar de mattminimal
    Membre depuis :
    21/01/2017
    Messages :
    8

    Super merci je vais tester !!!!

Vous ne pouvez pas répondre à ce sujet.