Autour de Laravel

Difficultés de compréhension et problème de variable non reconnu

  • Avatar de Jeelo
    Membre depuis :
    11/12/2019
    Messages :
    9

    Bonjour,

    je développe ma première application avec Laravel et pour cela, j'ai voulu créer une galerie photo avec une partie d'administration.

    J'ai suivi plusieurs tuto en ligne, cependant j'éprouve pas mal de difficultées.
    D'une part, je ne comprend pas pourquoi ma variable n'est pas reconnu dans mon template dans lequel je fais une boucle sur les photos, d'autres part dans la supression des photos, je n'arrive pas à supprimer l'album entier avec ses photos et les informations en base de données. Je m'y perd un peu dans tout les codes.

    Je me pose plein de question sur le fonctionnement, tel que
    Dans le controller j'y déploi les fonctions qui donne les instructions CRUD, ces instructions sont lu par le biais de la route qui ensuite est renvoyé par la même route à la vue ?

    Pour le fonctionnement de blade, l'héritage peut-il nuir à la lisibilité des variables ?

    Si besoin je peux vous compresser le dossier et vous l'envoyer ! Merci d'aider un noob du développement.

  • Avatar de Dom
    Membre depuis :
    17/07/2017
    Messages :
    40

    Bonjour,

    le mieux est effectivement de fournir un peu de code pour comprendre tes questions. Tu devrais essayer de le mettre sur un gestionnaire de version comme github par exemple.
    Ensuite, pose tes questions une par une, car sinon se sera impossible pour toi de t'y retrouver.

  • Avatar de CinquièmeDimension
    Membre depuis :
    18/04/2019
    Messages :
    57

    Salut,

    Le mieux est que tu fasse un github public pour qu'on puisse tout voir.
    Ou au minimum, comme l'a dit Dom, du publier le code qui pose problème.

  • Avatar de Jeelo
    Membre depuis :
    11/12/2019
    Messages :
    9

    Bonjour, merci Dom et CinquièmeDimension pour vos réponses.
    Donc j'ai envoyer sur GitHub tout le projet, c'est ma première application que je réalise de A à Z grâce aux tutos, habituellement j'utilisais WP.
    L'adresse est https://github.com/JeremieLoison/projetPhotoShow.git

    Je me pose la question du template Blade, celui ci peut-il empêcher la lecture d'une variable ? C'est à dire, l'héritage d'un template empéchant l'accès au controller ?

    Merci pour votre accompagnement.

  • Avatar de CinquièmeDimension
    Membre depuis :
    18/04/2019
    Messages :
    57

    Alors c'est sur quelle route que tu ne comprends pas pourquoi ta variable n'est pas reconue ? (on va prendre les problèmes l'un après l'autre).
    Moi je n'utilise pas la syntaxe

    $albums = Album::with('Photos')->get();
    return view('layoutsAdmin.adminPhotos')->with('albums', $albums);

    Je fais plutôt

    $data['albums'] = Album::with('Photos')->get();
    return view('ayoutsAdmin.adminPhotos',$data);

    Comme ça je sais que je passe un array même si je n'envoie qu'une variable. Mais ta méthode est valable aussi je pense.
    (je vois aussi que tu utilise des '< ?php' dans tes vues, il existe '@ php' dans blade)

  • Avatar de Jeelo
    Membre depuis :
    11/12/2019
    Messages :
    9

    Bonjour,

    merci 5D, je vais réécrire le code avec les @php pour bien respecter le code de blade.
    Pour les routes, j'ai mangé quelques lectures sur les routes, et observé les codes en ligne pour me rendre compte que j'inversais la destination de la route viewsGallery/showBio avec le nom dans l'url Biographie.

    Je suis arrivé à ce code là:

    Route::view('welcome', 'welcome')->name('welcome');
    Route::view('Biographie', 'viewsGallery/showBio')->name('showBio');
    Route::view('Galerie', 'viewsGallery/showGallery')->name('showGallery');
    Route::view('Contactez-moi', 'viewsGallery/contact')->name('contact');

    Les pages vont bien à leur destination.

    Pour le problème de variable, c'est ma route showGallery qui m'affiche cette erreur ci:

    je réalise une boucle sur les photos. Mais celle ci ne trouve pas ma variable $album qui se situe dans AlbumsController.php

    Facade\Ignition\Exceptions\ViewException
    Undefined variable: album (View: C:\laragon\www\photoshow\resources\views\viewsGallery\showGallery.blade.php)

    $album is undefined
    Make the variable optional in the blade template. Replace {{ $album }} with {{ $album ?? '' }}

    mon code dans cette vue le voici:

    @extends('viewsGallery.layouts.template')

    @section('content')

    {{$album->name}}

    Retour
    Charger des photos dans l'album


    @if(count($album->photos) > 0)
    @php
    $colcount = count($album->photos);
    $i = 1;

    <div id="photos">
    <div class="column text-center">
    @foreach($album->photos as $photo)
    @if($i == $colcount)
    <div class="large-flex-dir-column">
    <a href="../photos/{{$photo->id}}">
    <img class="thumbnail" src="/storage/photos/{{$photo->album_id}}/{{$photo->photo}}"
    alt="{{$photo->title}}">
    </a>
    <br>
    <h4>{{$photo->title}}</h4>
    <a class="button alert" href="../photos/{{$photo->id}}">Supprimer la photo de l'album</a>
    @else
    <div class="large-flex-dir-column">
    <a href="photos/{{$photo->id}}">
    <img class="thumbnail" src="/storage/photos/{{$photo->album_id}}/{{$photo->photo}}"
    alt="{{$photo->title}}">
    </a>
    <br>
    <h4>{{$photo->title}}</h4>
    <a class="button alert" href="../photos/{{$photo->id}}">Supprimer la photo de l'album</a>
    @endif
    @if($i % 3 == 0)
    </div> </div><div class="row text-center">
    @else
    </div>
    @endif
    <?php $i++; ?>
    @endforeach
    </div>
    </div>

    @else

    Aucune photo à afficher !

    @endif
    @endsection

    Merci de vos explicatons.

  • Avatar de Hypr
    Membre depuis :
    19/01/2020
    Messages :
    3

    Salut Jeelo,

    Dans ton controller, remplace

    $albums = Album::with('Photos')->get();
    return view('layoutsAdmin.adminPhotos')->with('albums', $albums);

    Par

    $albums = Album::with('Photos')->get();
    return view('layoutsAdmin.adminPhotos', compact($albums); // envoie un tableau associatif ['albums' => $albums]

    Et réessaie.

  • Avatar de Jeelo
    Membre depuis :
    11/12/2019
    Messages :
    9

    Bonjour Hypr,

    merci en effet ça fonctionne un peu mieux, la variable est bien retrouvé et les informations passent bien dans la vue.

Vous ne pouvez pas répondre à ce sujet.