ErrorException(E_ERROR)未定义的变量:页数

时间:2019-09-26 08:25:58

标签: php html laravel laravel-blade

我有一个简单的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很新。

  

更新

我尝试了法尔斯提供的最多的解决方案,但是仍然;同样的错误,这是我的存储库repo

我的代码怎么了?

4 个答案:

答案 0 :(得分:2)

在您的控制器中使用:

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 :(得分:2)

实际上,问题出在侧边栏和路由中。在边栏中,您尝试使用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');

您的压缩就可以了。不需要更改它。

答案 2 :(得分:0)

用以下代码替换您的网站

.tab-wrapper {
    width: auto;
    padding-left: 17px;
    background-color: aqua;
    white-space: nowrap;
    display: table-cell; 
}

.content{    
    background-color: aqua;
}

.role-tab {
    cursor: pointer;
    display: inline-block;
    height: 50px;
    overflow: hidden;
    text-align: center;
    text-overflow: ellipsis;
    vertical-align: middle;
    margin-right: 19px;
    margin-bottom:-3px;
}

    .role-tab > p {
        display: table-cell;
        height: 50px;
        overflow: visible;
        vertical-align: middle;
        width: 100%;
    }

.role-tab-active {
    margin-bottom:-3px;
    border-bottom: 3px #108DE7 solid;
    font-weight: bold;
}

答案 3 :(得分:0)

该错误表示您的页面变量未传递给视图。

您可以在索引函数中尝试一下吗?

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