未定义变量:post在home.blade.php中



这是我的Admincontroller

<?php

namespace AppHttpControllers;

use AppModelsPost;
use IlluminateHttpRequest;
use IlluminateSupportFacadesDB;

class AdminController extends Controller
{
public function index(){
$data=DB::table('post')->get();
return view('admin.home',['post'=>$data]);
}
public function add(){
return view('admin.add');
}
public function addpost(Request $request){
request()->validate([
'title'=>'required|max:50',
'post'=>'required|max:500'
]);

DB::table('post')->insert([
'title'=>request('title'),
'post'=>request('post')
]);

return view('admin.home');
}

public function edit(Post $post){
return view('admin.edit',['post'=>$post]);
}
public function editpost(Request $request, Post $post){
request()->validate([
'title'=>'required|max:50',
'post'=>'required|max:500'
]);
DB::table('post')->update([
'title'=>request('title'),
'post'=>request('post')
]);
return redirect('home');
}
public function deletepost(Post $post){
$post->delete();
return redirect('home');
}
}

这是我的路线

<?php

use AppHttpControllersAdminController;
use AppHttpControllersLoginController;
use AppHttpControllersLogoutController;
use AppHttpControllersRegisterController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
return view('welcome');
});
Route::get('/home',[AdminController::class,'index']);
Route::get('/add',[AdminController::class,'add'])->middleware('auth');
Route::post('/addpost',[AdminController::class,'addpost']);
Route::get('/edit/{post}',[AdminController::class,'edit']);
Route::post('/editpost/{post}',[AdminController::class,'editpost']);
Route::get('/delete/{post}',[AdminController::class,'deletepost']);
Route::post('/logout',[LogoutController::class,'logout']);
Route::get('/login',[LoginController::class,'login'])->name('login');
Route::post('/logindetails',[LoginController::class,'logindetails']);
Route::get('/register',[RegisterController::class,'register']);
Route::post('/registerdetails',[RegisterController::class,'registerdetails']);

这里是home。blade.php

<html>
<head>
</head>
<body>
@auth
<a href="home"><button>HOME</button></a>
<a href="add"><button>ADD</button><a>
<form method="post" action="logout" style="display:inline-block;">
@csrf
<button>LOGOUT</button>
</form> <!--here-->
@endauth
@guest
<a href="login"><button>LOGIN</button></a>
<a href="register"><button>REGISTER</button></a>    
@endguest


@foreach($post as $data)
<article> {{$data->title}}<br> {{$data->post}} 
@auth <a href="edit{{$data->id}}">edit</a>| <a href="delete{{$data->id}}">delete</a>@endauth
</article>
@endforeach
</body>
</html>

错误提示:未定义变量:post (View: C:installationxampphtdocssamplelaravel1resourcesviewsAdminhome.blade.php)

在home.blade.php中调用$post是无效的,因为它在我编辑时未定义页面成功地从我的数据库检索信息,而当我调用$post在home.blade.php中它不起作用。我在Laravel框架5.8.38

我还做过:


public function index(){
$data=DB::table('post')->get();
return view('admin.home',compact('post'));
}

public function index(){
$data=DB::table('post')->get();
return view('admin.home')with(['posts' => $data]);
}

public function index(){
$data['post']=DB::table('post')->get();
return view('admin.home',$data);
}

但不工作

您没有将$post传递给控制器中的视图或重定向

将函数索引改为:

public function index(){
$post=DB::table('post')->get();
return view('admin.home', compact('post'));
}
public function index()
{
$post = Post::all();
return view('admin.home', compact('post'));
}

最新更新