用户使用 Laravel 提交的帖子

问题描述 投票:0回答:3

我正在尝试构建一个应用程序,它将包含一个管理仪表板,管理员可以在其中 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 变量未定义的错误,尽管我在控制器中定义了它。有谁可以帮忙吗?

php laravel laravel-blade posts
3个回答
0
投票

您应该将变量“传输”到您的视图。有多种方法可以做到这一点,但我想说最常见的是使用“with Compact”。对于你的情况,你应该改变这个

return view('admin.userposts.archive')->withUsp($userposts);

对此

return view('admin.userposts.archive')->with(compact('userposts'));

它是如何工作的:

compact("varname", [...])

返回一个数组,其中键是变量名称,值是变量值

with 只是将所有数组传输到视图

PS:

compact('userposts')

和这个一模一样

['userposts' => $userposts]

0
投票

如果您想使用

userposts
变量,请执行以下操作:

return view('admin.userposts.archive', compact('userposts');

或者这个:

return view('admin.userposts.archive', ['userposts' => $userposts]);

0
投票

更改此:

return view('admin.userposts.show')->withUsp($userpost);

return view('admin.userposts.show', array('userpost' => $userpost));

然后再试一次。您可以在刀片视图上获得

$userpost
,例如:

{{ $userpost }}

如果是数组,则使用

foreach()
获取其所有元素。

© www.soinside.com 2019 - 2024. All rights reserved.