ErrorException (E_ERROR) Неопределенная переменная: страницы - PullRequest
1 голос
/ 26 сентября 2019

У меня есть простое приложение crud, я могу добавить детали и сохранить в базе данных, теперь я хочу отобразить эти данные.

Вот мое решение для отображения этих данных

PageListControllerвыглядит так, просто функция для отображения данных

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'));
    }
}

Вот index.blade.php на просмотрах

@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

Теперь, когда я запускаю приложение, я получаю следующую ошибку

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

Примечание: я новичок в laravel.

ОБНОВЛЕНИЕ

Я пробовал большинство решений, предоставленных парнями, но все же;та же ошибка, вот мой репозиторий репо

Что не так с моим кодом?

Ответы [ 4 ]

2 голосов
/ 26 сентября 2019

В вашем контроллере используйте:

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

Вы не связываете страницы должным образом, поэтому, когда вы пытаетесь получить к нему доступ в своем блейде, вы получаете ошибку.

Функция view() принимает второй параметр в качестве массива привязки.Там вы можете передать имя и значение переменных, которые вы хотели бы использовать в своем блейде.

По моему опыту, в большинстве случаев мне требуется более одной переменной в моем блейде, поэтому я всегда делаю массив данныхи только передать это в блейд, а затем в блейд, я использую массив данных, как в вашем случае, скажем, вы хотите передать пользовательский объект также в вашем блейде, я бы сделал это так:

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

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

Тогда в своем клинке вы можете использовать: $data['pages'] и $data['user']

1 голос
/ 26 сентября 2019

На самом деле проблема в вашей боковой панели и в маршрутизации.На боковой панели вы пытаетесь получить доступ к списку страниц, используя route('table'), а в вашем файле маршрута маршрут возвращается на страницу индекса без переменной pages.И вы получаете ошибку.Либо измените боковую панель, как

<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> 

И если вы хотите использовать маршрут table, то измените маршрут

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

С вашим уплотнением все в порядке.не нужно это менять.

0 голосов
/ 26 сентября 2019

ошибка означает, что ваша переменная страниц не передается вашим представлениям.

Не могли бы вы попробовать это в вашей функции индекса:

return view('pages.index')->with(compact('pages'));
0 голосов
/ 26 сентября 2019

Замените вашу сеть следующим кодом

Route::group(['middleware' => 'auth'], function () {
    Route::get('table-list', function () {
        return view('pages.index', ['pages' =>  $pages]);
    })->name('table');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...