无法将结果从控制器传递到Laravel 5.4中的视图

时间:2017-02-22 05:26:57

标签: php laravel

我有一个名为MyClass的简单类,如下所示:

namespace App\MyDomain;

class MyClass{

    private $msg;

    public function __construct($msg){

        $this->msg = $msg;

    }

    public function saySomething(){

        return $this->msg;

    }
}

我在Pages子文件夹下有一个名为testView.blade.php的简单测试视图,如下所示:

<h3>Test View page</h3>

<p>Content before</p>

<p>Contents from controller: 

    <ul>

        @foreach($results as $result)

            <li>{{$result}}</li>

        @endforeach

    </ul>

</p>

<p>Content after</p>

以下是我的路线的样子:

Route::get('/sandbox', 'PageController@getData');

在我的PageController中,我有一个方法getData,如下所示:

public function getData(){

     $results = new MyClass('aloha');

    // I can see the variable when dumping
    // dd($results); 

    // but this is not working. it only displays the test view but not the results variable
    return view('pages.testView',compact('results')); 

    }

所以当我点击沙盒时#39; URI,我应该点击控制器并将结果返回到我的视图,然后我应该看到“aloha&#39;但它只是空洞的。我在视图中看不到变量结果。

我也在this link上尝试了这个建议,但我认为它不适用于我的版本,或者我只是不知道如何让它发挥作用

我错过了什么吗?感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

抱歉,我忘了调用myClass的方法,这就是为什么它在视图中不可见。

public function getData(){

    $obj = new MyClass('aloha');

    $result = $obj->saySomething();

    return view('pages.testView',compact('result'));
}

现在正在工作; - )

<h3>Test View page</h3>

<p>Content before</p>

<p>Contents from controller: 

            {{ $result }}

</p>

<p>Content after</p>

感谢你们的评论。它给了我提示!

答案 1 :(得分:0)

是的,您正在循环一个对象。在您的视图中,删除foreach循环,然后执行。

<ul>
    <li>{{ $result->saySomething() }}</li>
<ul>

您的$results变量包含1个MyClass实例。

答案 2 :(得分:0)

你试图循环对象。 {{ var_dump($results) }}查看对象。如果你想看到这条消息。 {{ $results->saySomething() }}