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?
4 Réponses :
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'
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)
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');
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.
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'));
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?
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.
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 :)