Php 路由不工作,来自控制器的变量显示为未定义
后置控制器Php 路由不工作,来自控制器的变量显示为未定义,php,laravel,routing,laravel-routing,Php,Laravel,Routing,Laravel Routing,后置控制器 公共功能索引() { $posts=Post::all(); 返回视图('home')->带有('posts',$posts); } web.php 路由::get('/',函数(){ 返回视图(“欢迎”); }); Auth::routes(); 路由::get('/home','HomeController@index')->名称('home'); 路由::资源('posts','PostController'); 家 @foreach($posts as$post) {{$
公共功能索引()
{
$posts=Post::all();
返回视图('home')->带有('posts',$posts);
}
web.php
路由::get('/',函数(){
返回视图(“欢迎”);
});
Auth::routes();
路由::get('/home','HomeController@index')->名称('home');
路由::资源('posts','PostController');
家
@foreach($posts as$post)
{{$post['content']}
@endforeach
我得到这个错误
Facade\Ignition\Exceptions\ViewException
Undefined variable: posts (View: C:\xampp\htdocs\lts\resources\views\home.blade.php)
$posts
未定义
在刀片模板中使变量成为可选变量。将{{$posts}}
替换为{{{$posts???''}}
谢谢大家的帮助,我通过添加
Route::get('/home', 'PostController@index');
我想知道为什么这个问题首先是由
Route::resource('posts','PostController')引起的代码>应该已经处理过了。试试这个,而不是你为循环所做的
@foreach($posts as $post)
{{ $post->content}}
@endforeach
试试这个,而不是你给的循环
@foreach($posts as $post)
{{ $post->content}}
@endforeach
试着替换
return view('home')->with('posts', $posts);
与
及
{{$post['content']}
与
{{可选($post)->content}
尝试更换
return view('home')->with('posts', $posts);
与
及
{{$post['content']}
与
{{可选($post)->content}
控制器中的技术
public function index()
{
$posts=Post::all();
return view('home')->with('posts', $posts);
}
换刀
@foreach($posts as $post)
{{ $post['content'] }}
@endforeach
控制器中的错误
public function index()
{
$posts=Post::all();
return view('home')->with('posts', $posts);
}
换刀
@foreach($posts as $post)
{{ $post['content'] }}
@endforeach
有两种方法可以做到这一点:
第一个:
如果要将HomeController
用于/home
路由,请在HomeController中添加以下代码
家庭控制器:
public function index()
{
$posts=Post::all();
return view('home')->with('posts', $posts);
}
第二个
您在web.php
中使用了resource
方法,因此您的“PostController”URL从posts
开始,但您使用了/home
。
所以,像这样改变你的路线:
在web.php中
Route::get('/home', 'PostController@index')->name('home');
Route::resource('posts','PostController');
有两种方法可以做到这一点:
第一个:
如果要将HomeController
用于/home
路由,请在HomeController中添加以下代码
家庭控制器:
public function index()
{
$posts=Post::all();
return view('home')->with('posts', $posts);
}
第二个
您在web.php
中使用了resource
方法,因此您的“PostController”URL从posts
开始,但您使用了/home
。
所以,像这样改变你的路线:
在web.php中
Route::get('/home', 'PostController@index')->name('home');
Route::resource('posts','PostController');
您确定要从Posts
表中获取变量吗?因此,通过添加以下路由::get('/home','PostController@index'); 路由前::资源('posts','PostController');索引函数似乎正在工作。这不应该用Route::resource('posts','PostController')来处理吗;你从哪里得到这个错误<代码>PostController@index
显示home.blade
,以及HomeController@index
。您的HomeController
中是否设置了$posts
homecontroller@HaseebAhmed哪个控制器用于检索post?PostController或HomeController。您确定要从Posts
表中获取变量吗?因此,通过添加以下路由::get('/home','PostController@index'); 路由前::资源('posts','PostController');索引函数似乎正在工作。这不应该用Route::resource('posts','PostController')来处理吗;你从哪里得到这个错误<代码>PostController@index显示home.blade
,以及HomeController@index
。您的HomeController
中是否设置了$posts
homecontroller@HaseebAhmed哪个控制器用于检索post?PostController或HomeController。{$post['content']}
更改此设置。当“$posts未定义”返回视图('home')->带有('posts',$posts)时,这有何帮助
{$post['content']}或{{$post->content}}{$post['content']}}
更改此设置。当“$posts未定义”返回视图('home')->带有('posts',$posts”)时,这有什么帮助代码>{{$post['content']}}或{{{$post->content}你能确认你正在点击这个控制器吗?公共函数索引(){dd('expected controller is executing');$posts=Post::all();返回视图('home')->with('posts',$posts);}您能确认您正在点击这个控制器吗?公共函数索引(){dd('expected controller is executing');$posts=Post::all();返回视图('home')->with('posts',$posts);}@HaseebAhmed您使用哪种方法?第一个或第二个。看起来这就是问题所在,在主页上检索帖子是个坏主意?@HaseebAhmed你是对的,第二个方法更准确。@HaseebAhmed哪种方法适合你?第一个还是第二个。看起来这就是问题所在,在主页上检索帖子是个坏主意?@HaseebAhmed你是对的,第二个方法更准确。