首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义变量:$ Laravel 5

未定义变量:$ Laravel 5
EN

Stack Overflow用户
提问于 2015-07-07 09:05:25
回答 4查看 64.7K关注 0票数 3

这是来自CategoriesController的代码:

代码语言:javascript
复制
 public function index()
{
    $categories = Category::all();
    return view('/home', compact('categories'));
}

这是我给home.blade.php写的代码

代码语言:javascript
复制
                @foreach($categories as $cat)
                @endforeach

然后在home.blade.php

我得到了一个错误:Undefined variable: categories

为什么会这样?所有的东西都能很好地处理文章,而不是类别,代码也是一样的。

Home.blade.php

代码语言:javascript
复制
@extends('app')

@section('content')

     <div class="col-md-4 pull-right">
      <div class="panel panel-primary">
        <div class="panel-heading">
          <h3 class="panel-title">Categories</h3>
        </div>
        <div class="panel-body">

                          @foreach($categories as $cat)
                          <div class="col-lg-6">
                            <ul class="list-unstyled">
                                <li><a href="articles/category/{{  }}">News</a>
                                </li>
                            </ul>
                        </div>                          
                          @endforeach
   </div>
      </div>     
    </div>


  @if(count($articles))

    @foreach($articles as $article)

<div class="panel panel-default col-md-8">
  <div class="panel-heading">

  <h3>{{ $article->title }}</h3>
   <small>posted by <a href="users/{{ $article->author->name }}">{{ $article->author->name }}</a> {{ $article->created_at }}</small>
  </div>
  <div class="panel-body">
  {!! str_limit($article->body, 1000) !!} 
    <hr>
  <a href="{{ url('/articles/'.$article->slug) }}">Read More</a>   
  </div>
</div>

        @endforeach
    @else
        <h1>No articles at the moment.</h1>
    @endif
    <br>
    {!! $articles->render() !!}
@stop
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-07 10:11:35

你有两条路

代码语言:javascript
复制
Route::get('/home', 'ArticlesController@index');
Route::get('/home', 'CategoriesController@index');

这意味着当您访问/home时,只触发ArticlesController@index,而不是两者都触发。

这意味着没有填充视图中使用的$categories变量,因为CategoriesController中的index()方法就是要这样做的,但是从来没有调用过。

因此,你需要这样做

代码语言:javascript
复制
Route::get('/home', 'HomeController@index');

public function index()
{
    $categories = Category::all();
    $articles   = Article::all();

    return view('/home', compact('articles', 'categories'));
}
票数 11
EN

Stack Overflow用户

发布于 2015-07-07 09:16:52

试着使用

代码语言:javascript
复制
return View::make('/home')->with(compact('categories'));

而不是

代码语言:javascript
复制
return view('/home', compact('categories'));
票数 4
EN

Stack Overflow用户

发布于 2020-04-07 03:21:04

我把这个插入到我的@foreach顶部

代码语言:javascript
复制
 <?php
     use App\models\PersonalContact;
     $data = PersonalContact::all();
 ?>

或在“foreach”之前添加“if”语句,如下所示

代码语言:javascript
复制
 @if (count($data) > 0)
            @foreach ($data as $bloginfo)
                <tr role="row" class="odd">
                    <td class="sorting_1">{{$bloginfo->name}}</td>
                    <td>{{$bloginfo->description}}</td>
                    <td>{{$bloginfo->email}}</td>
                    <td>{{$bloginfo->phone}}</td>
                    <td><img src="{{url('images/'.$bloginfo->image)}}" alt="" width="100px" height="100px"></td>
                <td><a href="{{url('admin/{admin}/personalcontact/create')}}" class="btn btn-app"><i class="fas fa-edit"></i>Add</a> | <a href="{{url('admin/{admin}/personalcontact/{personalcontact}/edit')}}" class="btn btn-app"><i class="fas fa-edit"></i>Edit</a> | <a class="btn btn-app"><i class="fas fa-edit"></i>Delete</a></td>
                </tr>
            @endforeach
        @endif    
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31264242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档