说实话未定义变量这种问题很低级,但我是真的不知道哪儿出了问题了?

控制器:

/** 首页控制器
 * Class StaticController
 * @package App\Http\Controllers
 */
class StaticController extends Controller
{

    public function home()
    {
        $feed_items = [];
        if (Auth::check()) {
            $feed_items = Auth::user()->feed()->paginate(30);
        }
        return view('static/home', compact($feed_items));
    }

    public function help()
    {
        return view('static/help');
    }

    public function about()
    {
        return view('static/about');
    }
}

模板
1、home.blade

@extends('static/default')

@section('content')

    @if (Auth::check())
        <div class="row">
            <div class="col-md-8">
                <section class="status_form">
                    @include('shared._status_form')
                </section>
                <h3>微博列表</h3>
                @include('shared._feed')
            </div>
            <aside class="col-md-4">
                <section class="user_info">
                    @include('users._user_info', ['user' => Auth::user()])
                </section>
            </aside>
        </div>
    @else
        <div class="jumbotron">
            <h1>Hello Laravel</h1>
            <p>
                一切,将从这里开始。
            </p>
            <p>
                <a class="btn btn-lg btn-success" href="{{ route('users.create') }}" role="button">现在注册</a>
            </p>
        </div>
    @endif
[@stop](https://learnku.com/users/14763)

2、shared._feed.blade

@if (count($feed_items))
    <ol class="statuses">
        [@foreach](https://learnku.com/users/5651) ($feed_items as $status)
            @include('statuses._status', ['user' => $status->user])
        @endforeach
        {!! $feed_items->render() !!}
    </ol>
@endif

这第二个模板,也就是遍历微博的模板,里面这个feed_items 变量就是获取不到,有没有看破玄机的童鞋 指点一下?

@李山河
你看我吊吗啊
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
ibucoin
最佳答案

compact传入参数可以是带有变量名的字符串,或者是变量数组。
你可以看看是不是这个错误了

5年前 评论
讨论数量: 9
你看我吊吗啊

我知道改成return view('static/home', ['feed_items' => $feed_items]); 就好了,还是想知道原因。。

5年前 评论
ibucoin

compact传入参数可以是带有变量名的字符串,或者是变量数组。
你可以看看是不是这个错误了

5年前 评论
你看我吊吗啊

@ibucoin $feed_items 只传的这个

5年前 评论
你看我吊吗啊

@ibucoin 应该穿这个变量的字符串。。。我直接传的变量 。。

5年前 评论

打印 compact[$feed_items] 为一个空数组 [ ],不知道为啥。。

5年前 评论
你看我吊吗啊

@bldcs123 去掉 $ .试试

5年前 评论

compact是php函数,把变量装到一个数组中。链接

5年前 评论

@JeffLi 传到view的变量是extract函数提取出来,看下这篇文章,可以对框架原理有个初步的了解。
https://www.awaimai.com/128.html#46_View

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!