【问题标题】:Laravel Error : Undefined variable : $ from views index.blade.phpLaravel 错误:未定义的变量:$ 来自视图 index.blade.php
【发布时间】:2019-12-16 14:49:44
【问题描述】:

我在尝试从它说的数据库中获取时遇到此错误

未定义变量:联系人(查看:C:\Users\My-Asus\contact_manager\resources\views\contacts\index.blade.php)

错误指的是用于下面 index.blade.php 中每个循环的变量 $contacts

@extends('layouts.main')

@section('content')

<div class="panel panel-default">
    <table class="table">

    @foreach ($contacts as $contact)
      <tr>
        <td class="middle">
          <div class="media">
            <div class="media-left">
              <a href="#">
                <img class="media-object" src="http://placehold.it/100x100" alt="...">
              </a>
            </div>
            <div class="media-body">
              <h4 class="media-heading">{{ $contact->name }}</h4>
              <address>
                <strong>{{ $contact->company }}</strong><br>
                {{ $contact->email }}
              </address>
            </div>
          </div>
        </td>
        <td width="100" class="middle">
          <div>
          {!! Form::open(['route' => ['contacts.destroy', $contact->id], 'method' => 'DELETE']) !!}
            <a href="{{ route('contacts.edit', ['id' => $contact->id]) }}" class="btn btn-circle btn-default btn-xs" title="Edit">
              <i class="glyphicon glyphicon-edit"></i>
            </a>
            <button class="btn btn-circle btn-danger btn-xs" title="Delete" onclick="return confirm('Are You sure ?')">
              <i class="glyphicon glyphicon-remove"></i>
            </button>

            {!! Form::close() !!}
          </div>
        </td>
      </tr>

    @endforeach

    </table>
  </div>

  <div class="text-center">
    <nav>
      {!! $contacts->appends( Request::query() )->render() !!}
    </nav>
  </div>

@endsection

我已经创建了这样的控制器,有什么问题吗?

class ContactsController extends Controller
{
    public function index(){
        $contacts = Contact::all();
        return view('contacts.index', compact('contacts'));
    }
}

这是路线(routes/web.php)

Route::get('/', function () {
    return view('contacts.index');
});


Route::resource('contacts', 'ContactsController');

任何帮助将不胜感激!

【问题讨论】:

  • 你能告诉你更多来自C:\Users\My-Asus\contact_manager\resources\views\contacts\index.blade.php)的代码

标签: laravel


【解决方案1】:

route.php 文件中,您正在调用view('contacts.index'),但没有使用compact 数据调用contacts

Route::get('/', function () {
    return view('contacts.index');
});

但是当你调用 /contacts 时,资源会调用 index 方法。

Route::resource('contacts', 'ContactsController');

因此您的代码将与/contacts 一起使用,如果您想使用相同的'/' url,您必须在路由文件中使用compact('contacts'),如下所示。

Route::get('/', function () {
    $contacts = \App\Contact::all();
    return view('contacts.index',compact('contacts'));
});

【讨论】:

    【解决方案2】:

    您将“/”直接返回到查看页面。这就是为什么它没有从控制器获取联系人变量的原因。

    在你的 web.php 文件中,

    Route::get('/', 'ContactController@index')->name('/');
    

    现在尝试使用

    清除缓存和路由
    php artisan config:cache
    php artisan route:clear
    

    如果您仍然遇到问题,请告诉我

    直接在路由中调用这个

    Route::get('/', function () {
        $contacts = \App\Contact::all();
        return view('contacts.index',compact('contacts'));
    });
    

    【讨论】:

    • 它不起作用,它仍然显示未定义索引:联系人
    • compact('contacts ') ... 这个错字是我如何判断这是复制和粘贴
    • 如果此答案对您有帮助,请标记为已验证谢谢...
    【解决方案3】:

    我想你已经通过路由直接调用"index.blade.php"。你必须调用"ContactsController"的方法索引。

    删除你的路由代码并在路由文件中使用以下代码:

    Route::get('/', 'ContactsController@index');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多