【问题标题】:Laravel: Make a Public Profile PageLaravel:创建一个公开的个人资料页面
【发布时间】:2020-07-05 05:25:18
【问题描述】:

我正在制作一个必须具有公共用户个人资料页面的 laravel 应用程序。我目前拥有的个人资料页面是私人页面。如何使页面公开,以便所有用户都可以查看所有配置文件。

这里是代码:-

在路由中 -> web.php

Route::get('user/profile', 'UserProfileController@profile')->name('user.profile');

在 Http-> Controllers-> UserProfileController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserProfileController extends Controller
{
    //
    public function __construct()
    {
        $this->middleware('auth');
    }
    public function profile()
    {
        return view('user.profile');
    }


}

在视图中 -> 用户 -> profile.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-10 offset-md-1">
            <div class="card">
                <div class="card-header">{{ Auth::user()->name }}'s Profile page</div>

                <div class="card-body">
                    Hi, {{ Auth::user()->name }} This is a private profile page!!!
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

输出看起来像这样

【问题讨论】:

  • 该代码缺少您想要做的事情的基本要素:您的路线应该有一个 id 或 slug 来识别您要显示其个人资料的用户。然后在您的profile() 方法中获取特定用户的数据,将数据分配给您的视图,在您的profile.blade.php 中输出数据。

标签: php laravel routes


【解决方案1】:

01.将路由器更改为

Route::get('user/profile/{id}', 'UserProfileController@profile')->name('user.profile');

02.在 UserProfileController profile($id) 方法中传递 $id 和中间件添加 except

use App\User; 
class UserProfileController extends Controller
{
    //
    public function __construct()
    {
        $this->middleware('auth', ['except' => [ 'profile']]);
    }
    public function profile($id)
    {
        $user = User::find($id);
        return view('user.profile', compact('user') );
    }

}

**03.在视图 -> 用户 -> profile.blade.php **

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-10 offset-md-1">
            <div class="card">
                <div class="card-header">{{ $user->name }}'s Profile page</div>

                <div class="card-body">
                    Hi, {{ $user->name }} This is a private profile page!!!
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

【讨论】:

  • 抱歉回复晚了。我收到以下错误:- [Route: user.profile] [URI: user/profile/{id}] 缺少必需的参数。 (查看:/home/riwaj/Desktop/dmt-intern-manager/InternManager/resources/views/layouts/app.blade.php)
【解决方案2】:

添加用户ID

<a  href="{{ route('user.profile', auth()->user()->id )}}"></a>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-06
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-09
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多