Laravel 更改变量名称时显示未定义的变量
在我的控制器页面中,我试图将所有数据从模式返回到视图。我将所有数据保存在一个变量中,并将其传递到视图页面。当我将变量名保留为Laravel 更改变量名称时显示未定义的变量,laravel,Laravel,在我的控制器页面中,我试图将所有数据从模式返回到视图。我将所有数据保存在一个变量中,并将其传递到视图页面。当我将变量名保留为$post时,我得到错误: Undefined variable: post (View: C:\xampp\htdocs\laravel\lsapp\resources\views\posts\index.blade.php) 控制器页 // PostController.php <?php namespace App\Http\Controllers; use
$post
时,我得到错误:
Undefined variable: post (View: C:\xampp\htdocs\laravel\lsapp\resources\views\posts\index.blade.php)
控制器页
// PostController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;
class PostController extends Controller
{
public function index()
{
$post = Post::all();
return view('posts.index')-> with('posts', $post);
}
//remaining code blocks
因为使用('variableName',$variable')传递
的方法,在视图中可以使用$variableName
变量
更换控制器
return view('posts.index')-> with('posts', $posts);
return view('posts.index')-> with('post', $posts);
和视图
@if(count($posts) > 1)
@if(count($post) > 1)
或者您可以更改控制器
return view('posts.index')-> with('posts', $posts);
return view('posts.index')-> with('post', $posts);
和视图
@if(count($posts) > 1)
@if(count($post) > 1)
当您将变量作为$posts
发送至此处查看时:
return view('posts.index')->with('posts', $post);
在视图中使用@if(count($post)>1)
posts.index
如果要使用$post
作为视图中的变量,请将其作为->发送,并带有('post',$post)代码>如果您转到
/vendor/laravel/framework/src/illumb/View/View.php
你会发现这个方法。在这个类中,您可以清楚地看到这些值与要渲染的视图相关联
public function with($key, $value = null)
{
if (is_array($key)) {
$this->data = array_merge($this->data, $key);
} else {
$this->data[$key] = $value;
}
return $this;
}
如果你不想使用这个,这里有一个替代方案
return view('posts.index', compact('posts'));
这是$posts
不是$post
所以使用@if(count($posts)>1)
@C2486这就是我要问的,为什么我不能使用变量名作为$post
?然后使用->和('post',$post)代码>谢谢你的回复。但这不是我的问题,我想知道为什么我不能使用变量名作为$post
或任何其他变量名。因为使用('variableName',$variable'
传递的方法,并且鉴于您可以使用$variableName
变量如果不清楚您想说什么,请再次检查变量名->('posts',$post);
他将它作为'posts'发送到视图中