1
votes

ErrorException (E_ERROR) Variable non définie: pages

J'ai une application crud simple, je peux ajouter des détails et enregistrer dans la base de données, maintenant je veux afficher ces données.

Voici ma solution pour afficher ces données

PageListController ressemble à ceci, il suffit d'afficher des données

ErrorException (E_ERROR)
Undefined variable: pages (View: C:\custom-xammp\htdocs\royalad-dashboard\resources\views\pages\index.blade.php)

Voici index.blade.php sur les vues

@extends('layouts.app', ['activePage' => 'table', 'titlePage' => __('Table List')])

@section('content')
<div class="content">
  <div class="container-fluid">
    <div class="row">
      <div class="col-md-12">
        <div class="card">
          <div class="card-header card-header-primary">
            <h4 class="card-title ">Page list</h4>
            <p class="card-category">Here you can manage pages</p>
          </div>
          <div class="row">
            <div class="col-12 text-right">
              <a href="{{ route('pages.create') }}" class="btn btn-sm btn-primary">Add page</a>
            </div>
          </div>
          <div class="card-body">
            <div class="table-responsive">
              <table class="table">
                <thead class=" text-primary">
                  <th>
                    ID
                  </th>
                  <th>
                    Page Name
                  </th>
                  <th>
                  Articles
                  </th>
                  <th>
                    Tags
                  </th>
                  <th>
                    Status
                  </th>
                  <th>
                    Action
                  </th>
                  <th>
                    Prebid
                  </th>
                </thead>
                <tbody>
                  @foreach ($pages as $page)

                  <tr>
                      <td>
                        {{$page->id}}
                      </td>
                      <td>
                        {{$page->pagetitle}}
                      </td>
                      <td>
                        {{$page->articlelist}}
                      </td>
                      <td>
                         {{{$contact->tags}}}
                      </td>
                      <td class="text-primary">
                        {{$page->status}}
                      </td>
                      <td class="td-actions">

                          <form action="" method="post">
                              <a rel="tooltip" class="btn btn-success btn-link" href="" data-original-title="" title="">
                                <i class="material-icons">edit</i>
                                <div class="ripple-container"></div>
                              </a>
                              <button type="button" class="btn btn-danger btn-link" data-original-title="" title="" onclick="confirm('{{ __("Are you sure you want to delete this user?") }}') ? this.parentElement.submit() : ''">
                                  <i class="material-icons">close</i>
                                  <div class="ripple-container"></div>
                              </button>
                          </form>
                      </td>
                      <td>
                          {{$page->prebid}}
                      </td>

                  </tr>
                  @endforeach
                </tbody>
              </table>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
@endsection

Maintenant, lorsque j'exécute l'application, j'obtiens l'erreur suivante

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\PageList;


class PageListController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {

        $pages = PagesList::all();

        return view('pages.index', compact('pages'));
    }
}

Remarque: je suis tellement nouveau dans laravel.

MISE À JOUR

J'ai essayé la plupart des solutions fournies par les gars, mais quand même; la même erreur, voici mon référentiel repo

Quel est le problème avec mon code?


0 commentaires

4 Réponses :


2
votes

Dans votre contrôleur, utilisez:

$pages = PagesList::all();
$user = Auth::user();

$data = [
    'pages' => $pages,
    'user' => $user
];
return view('pages.index', ['data' => $data]);

Vous ne liez pas correctement les pages, c'est pourquoi lorsque vous essayez d'y accéder dans votre lame, vous obtenez l'erreur.

La fonction

view () prend le deuxième paramètre comme tableau de liaison. Là, vous pouvez passer le nom et la valeur des variables que vous souhaitez utiliser dans votre lame.

D'après mon expérience, la plupart du temps, j'ai besoin de plus d'une variable dans ma lame, donc je crée toujours une donnée tableau et ne le passer que dans la lame puis dans la lame J'utilise le tableau de données, comme pour votre cas, disons que vous vouliez également passer un objet utilisateur dans votre lame, je le ferais comme ceci:

return view('pages.index',['pages' => $pages]);

Ensuite, dans votre lame, vous pouvez utiliser: $ data ['pages'] et $data['user'


2 commentaires

Merci, j'ai essayé ceci mais toujours le même ici est mon repo github.com/throne1986/royalad-dahsboard/blob/master/app/Http‌ /… , pouvez-vous vérifier ce qui me manque ici?


Testé votre solution, maintenant j'obtiens cette erreur Variable non définie: data (View: C: \ custom-xammp \ htdocs \ royalad-dashboard \ resources \ views \ pag‌ es \ index.blade.php)



0
votes

Remplacez votre site Web par le code suivant

Route::group(['middleware' => 'auth'], function () {
    Route::get('table-list', function () {
        return view('pages.index', ['pages' =>  $pages]);
    })->name('table');


4 commentaires

J'ai essayé ceci mais toujours le même ici est mon repo github.com/throne1986/royalad-dahsboard/blob/master/app/Http‌ /… , pouvez-vous vérifier ce que je manque ici?


J'ai mis à jour ma réponse. Vérifiez-le! @ user9964622


J'ai changé comme vous l'avez demandé maintenant, j'obtiens cette erreur Variable non définie: pages qui pointe vers cette vue de retour ('pages.index', ['pages' => $ pages]); < / code> dois-je ajouter quelque chose dans webb.app?


Cela signifie que la variable pages sera transmise via votre route (web) et non avec le contrôleur, alors essayez de déclarer la même fonction du contrôleur à la route. copiez simplement les codes sur le Web à l'intérieur de la fonction.



0
votes

l'erreur signifie que la variable de vos pages n'est pas transmise à vos vues.

Pourriez-vous essayer ceci dans votre fonction d'index:

return view('pages.index')->with(compact('pages'));


1 commentaires

Merci, j'ai essayé ceci mais toujours le même ici est mon repo github.com/throne1986/royalad-dahsboard/blob/master/app/Http‌ /… , pouvez-vous vérifier ce qui me manque ici?



2
votes

En fait, le problème se situe dans votre barre latérale et dans le routage. Dans votre barre latérale, vous essayez d'accéder à la liste des pages en utilisant route ('table') et dans votre fichier d'itinéraire, l'itinéraire revient à la page d'index sans la variable pages . Et vous obtenez l'erreur. Soit changez la barre latérale comme

Route::get('table-list', function () {
        $pages = App\PagesList::all();
        return view('pages.index',compact('pages');
    })->name('table');

Et si vous voulez utiliser la table route alors changez la route

<li class="nav-item{{ $activePage == 'table' ? ' active' : '' }}">
    <a class="nav-link" href="{{ route('pages.index') }}">
        <i class="material-icons">content_paste</i>
        <p>{{ __('Page List') }}</p>
    </a>
</li> 

Votre compactage est très bien. pas besoin de changer cela.


4 commentaires

Maintenant, j'obtiens cette erreur Classe 'App \ Http \ Controllers \ PagesList' introuvable :( elle pointe vers ceci `$ pages = PagesList :: all ();`


vous avez utilisé use App \ PageList; mais utilisé le modèle comme PagesList . c'est une faute de frappe. supprimez simplement les s . dans le contrôleur $ pages = PageList :: all ();


Votre droit, merci et cela a résolu mon problème, U sauvé mon cul, merci beaucoup mon frère, que Dieu vous bénisse


soyez plus prudent. bon codage :)