在Laravel中加载视图中的数据

时间:2017-11-15 13:54:47

标签: php laravel-5.2

我有一个简单的控制器函数,可以从db获取所有记录。但是,当我试图显示所有这些记录时,它什么也没显示。实际上它向我展示了这样的硬编码foreach循环。

 @foreach ($compactData as $value) {{ $value->Name }} @endforeach 

这是我的控制器功能。

public function showallProducts()
{
    $productstock = Product::all()->stocks;
    $productoldprice = Product::all()->OldPrices;
    $productcurrentprice = Product::all()->CurrentPrice;
    $compactData=array('productstock', 'productoldprice', 'productcurrentprice');
    return view('welcome', compact($compactData));
}

这是我的观点

       <!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>


 </head>
 <body>
    <div class="flex-center position-ref full-height">

        <div class="content">
            <div class="title m-b-md">
                Laravel
            </div>

            <div class="title m-b-md">
                All products
            </div>


            <table>

                <tbody>
                @foreach ($compactData as $value)
                    {{ $value->Name }}

                @endforeach

                </tbody>


            </table>
        </div>
    </div>
</body>

 为什么它表现得像这样。任何解决方案我正在使用phpstorm版本17.他们的任何设置问题是运行项目,因为我运行它的任何项目给了我唯一的页面,我只用html运行? 我的路线是。

   Route::get('/', function () {

    $action = 'showallProducts';
    return App::make('ProductController')->$action();
 });

3 个答案:

答案 0 :(得分:1)

您检查过$compactData变量了吗?请dd($compactData)查看其中包含的内容。

问题1

您正在访问关系属性作为Eloquent集合的属性,如下所示:

Product::all()->stocks

这是不正确的。因为Collection对象没有属性stocks,但是Product对象可能有一个stocks属性。请阅读有关Collection的Laravel文档。

问题2

$compactData = array('productstock', 'productoldprice', 'productcurrentprice');

此行创建一个包含4个字符串的数组,普通字符串不可变。所以,你的$compactData包含一个4字符串的数组。如果您想要一个带关联数组的变量,那么您需要执行以下操作:

$compactData = compact('productstock', 'productoldprice', 'productcurrentprice');

问题3

return view('welcome', compact($compactData));

在这里,您尝试将$compactDate传递给welcome视图但不幸的是compact()函数不接受变量,但是我写的那个变量的字符串名称问题2 。所以,它应该是:

return view('welcome', compact('compactData'));

问题4

最后,在刀片中,您正在访问$compactData数据变量的每个元素,并将它们打印为可能是对象的字符串。

答案 1 :(得分:0)

我认为您没有在保存视图文件的名称中提及blade。因此,将保存文件的名称更改为:

filename.blade.php

再试一次。

说明:

@foreach ($compactData as $value)这是刀片模板引擎的语法,要解析并执行它,您必须在名称中提及blade扩展名。

答案 2 :(得分:0)

您的网络服务器很可能出现问题。

尝试使用Laravel Valet作为开发环境。

修改:我发现了这个:Valet for Windows