我有一个名为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上尝试了这个建议,但我认为它不适用于我的版本,或者我只是不知道如何让它发挥作用
我错过了什么吗?感谢您的帮助。
答案 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() }}