用户使用 Laravel 提交的帖子
User Submitted Posts using Laravel
我正在尝试构建一个应用程序,它将包含一个管理仪表板,管理员可以在其中查看 CRUD 帖子,但他也只能看到用户提交的帖子。
另一方面,访客将只能看到帖子,但他将能够创建用户提交的帖子。
到目前为止,我已经设法使帖子功能正常工作,但对于用户提交的帖子却没有。
我的控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Usp;
class AdminUserPostsController extends Controller
{
public function index()
{
$userposts = Usp::orderBy('id', 'desc')->paginate(10);
return view('admin.userposts.archive')->withUsp($userposts);
}
public function show($id)
{
$userpost = Usp::find($id);
return view('admin.userposts.show')->withUsp($userpost);
}
}
我的模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Usp extends Model
{
//
}
我的存档视图
@extends('admin')
@section('dashboard-content')
<div class="col-md-8 offset-md-2">
<h1>Posts Archive</h1>
<hr>
</div>
@foreach ($userposts as $userpost)
<div class="col-md-6 offset-md-2">
<h3>Title: {{ $userpost->title }}</h3>
<hr>
</div>
@endforeach
@endsection
和我的路线(针对特定控制器)
Route::get('/admin/userposts', 'AdminUserPostsController@index')->name('admin.userposts.archive');
Route::get('/admin/userposts/{id}', 'AdminUserPostsController@show')->name('admin.userposts.show');
尽管我在我的控制器中定义了 userposts 变量,但我收到了未定义的错误。谁能帮忙?
如果要使用 userposts
变量,请执行以下操作:
return view('admin.userposts.archive', compact('userposts');
或者这样:
return view('admin.userposts.archive', ['userposts' => $userposts]);
改变这个:
return view('admin.userposts.show')->withUsp($userpost);
至
return view('admin.userposts.show', array('userpost' => $userpost));
然后重试。您可以在 blade 视图中获得 $userpost
,例如:
{{ $userpost }}
如果是数组,使用foreach()
获取它的所有元素。
你应该"transmit"你的变量到你的视图。有几种方法可以做到这一点,但我想说最常见的是使用 "with compact"。在你的情况下,你应该改变这个
return view('admin.userposts.archive')->withUsp($userposts);
对此
return view('admin.userposts.archive')->with(compact('userposts'));
它是如何工作的:
compact("varname", [...])
returns一个数组,键是变量名,值是变量值
with 只是将所有数组传输到视图
PS :
compact('userposts')
和这个一模一样
['userposts' => $userposts]
我正在尝试构建一个应用程序,它将包含一个管理仪表板,管理员可以在其中查看 CRUD 帖子,但他也只能看到用户提交的帖子。 另一方面,访客将只能看到帖子,但他将能够创建用户提交的帖子。
到目前为止,我已经设法使帖子功能正常工作,但对于用户提交的帖子却没有。
我的控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Usp;
class AdminUserPostsController extends Controller
{
public function index()
{
$userposts = Usp::orderBy('id', 'desc')->paginate(10);
return view('admin.userposts.archive')->withUsp($userposts);
}
public function show($id)
{
$userpost = Usp::find($id);
return view('admin.userposts.show')->withUsp($userpost);
}
}
我的模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Usp extends Model
{
//
}
我的存档视图
@extends('admin')
@section('dashboard-content')
<div class="col-md-8 offset-md-2">
<h1>Posts Archive</h1>
<hr>
</div>
@foreach ($userposts as $userpost)
<div class="col-md-6 offset-md-2">
<h3>Title: {{ $userpost->title }}</h3>
<hr>
</div>
@endforeach
@endsection
和我的路线(针对特定控制器)
Route::get('/admin/userposts', 'AdminUserPostsController@index')->name('admin.userposts.archive');
Route::get('/admin/userposts/{id}', 'AdminUserPostsController@show')->name('admin.userposts.show');
尽管我在我的控制器中定义了 userposts 变量,但我收到了未定义的错误。谁能帮忙?
如果要使用 userposts
变量,请执行以下操作:
return view('admin.userposts.archive', compact('userposts');
或者这样:
return view('admin.userposts.archive', ['userposts' => $userposts]);
改变这个:
return view('admin.userposts.show')->withUsp($userpost);
至
return view('admin.userposts.show', array('userpost' => $userpost));
然后重试。您可以在 blade 视图中获得 $userpost
,例如:
{{ $userpost }}
如果是数组,使用foreach()
获取它的所有元素。
你应该"transmit"你的变量到你的视图。有几种方法可以做到这一点,但我想说最常见的是使用 "with compact"。在你的情况下,你应该改变这个
return view('admin.userposts.archive')->withUsp($userposts);
对此
return view('admin.userposts.archive')->with(compact('userposts'));
它是如何工作的:
compact("varname", [...])
returns一个数组,键是变量名,值是变量值
with 只是将所有数组传输到视图
PS :
compact('userposts')
和这个一模一样
['userposts' => $userposts]