Laravel:App\Http\Controllers\ProfileController::show() 缺少 1 个参数

Laravel: Missing 1 argument for App\Http\Controllers\ProfileController::show()

当我在home.blade.php中点击"Profile"时出现错误,"Missing 1 argument for App\Http\Controllers\ProfileController::show()"如何解决这个错误?

home.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row">
        <div class="sidebar col-md-3">
            <div class="panel panel-default">
                <div class="panel-heading">Navigation</div>
                  @if (Auth::user()->type === "Admin")
                    <ul class="list-group">
                        <li class="list-group-item"><a href="{{ URL::to('users') }}">Users</a></li>
                        <li class="list-group-item"><a href="{{ URL::to('adlogs') }}">Logs</a></li>
                    </ul>
                 @elseif (Auth::user()->type === "Employee")
                    <ul class="list-group">
                        <li class="list-group-item"><a href="{{ URL::to('profile') }}">Profile</a></li>
                        <li class="list-group-item"><a href="{{ URL::to('logs') }}"> Logs</a></li>
                    </ul>
                @else

                @endif
            </div>
        </div>  
        <div class="col-md-9">
            <div class="panel panel-default">
                <div class="panel-heading">Dashboard</div>

                <div class="panel-body">
                    You are logged in!
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

路线:

Route::get('/home', 'HomeController@index');
Route::resource('/profile', 'ProfileController@show');

HomeController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {

        return view('home');
    }

}

ProfileController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
class ProfileController extends Controller
{

    public function index()
    {

    }


    public function create()
    {
        //
    }


    public function store(Request $request)
    {
        //
    }


    public function show($id)
    {
        $users = User::find($id);

        return view('profile.index',compact('users'));


    }


    public function edit($id)
    {
        //
    }


    public function update(Request $request, $id)
    {
        //
    }


    public function destroy($id)
    {
        //
    }
}

这是个人资料文件夹的 index.blade.php。这是应该输出的地方。

@extends('layouts.app')
@section('content')
    <div class="container">
        <div class="row">

            <div class="table-responsive">
                <table class="table table-striped">
                    <thead>
                        <td>User ID</td>
                        <td>First Name</td>
                        <td>Last Name</td>
                        <td>Email</td>
                        <td>Job Title</td>
                        <td>Contact No</td>
                        <td>ABN Number</td>
                        <td>Status</td>
                        <td>Type</td>
                        <td>Action</td>
                    </thead>
                    <tbody>                                     
                        @foreach($users as $value)  
                            <tr>
                                <td>{{ $value->id }}</td>                           
                                <td>{{ $value->first_name }}</td>
                                <td>{{ $value->last_name }}</td>
                                <td>{{ $value->email }}</td>
                                <td>{{ $value->job_title }}</td>
                                <td>{{ $value->contact_no }}</td>
                                <td>{{ $value->abn_number }}</td>
                                <td>{{ $value->status }}</td>
                                <td>{{ $value->type }}</td>
                                <td>
                                    <a href="{{ URL::to('users/' . $value->id . '/edit') }}">
                                        Edit
                                    </a>                                                    
                                    <a href="{{ URL::to('users/' . $value->id . '/destroy') }}">
                                        Delete
                                    </a>
                                </td>   
                            </tr>                   
                         @endforeach                                         
                    </tbody>
                </table>
            </div>



        </div>
    </div>
 @endsection

如何解决这个问题?

使用时

Route::resource...

您无法指定函数。只需使用:

Route::resource('/profile', 'ProfileController');

编辑:

Route::resource 为您创建 6 条路线。请看下面我的图片。


由于您的路由需要一个参数($id),您需要向它传递一个参数。也许使用命名路由也更容易。所以而不是

<a href="{{ URL::to('profile') }}">Profile</a>

你会写

<a href="{{ route('profile.show', Auth::user()->id) }}">Profile</a>


您可以使用命令

查看所有可用路由
php artisan route:list

输出应如下所示:

这种情况会有很大的解决办法。

Solution number one

您可以像这样更改路线

Route::resource('/profile/{id}', 'ProfileController@show');

Solution number two

使用相同的路线,您可以像这样更改您的控制器

public function show()
{
    $id = Auth::id();
    $users = User::find($id);

    return view('profile.index',compact('users'));

}

希望以上回答能对您的问题有所帮助

here is the route list

个人资料{id}中没有名字

在途中

Route::resource('/profile', 'ProfileController');    

可见

     <ul class="list-group">
      <li class="list-group-item"><a href="{{ URL::to('profile/'.Auth::user()->id)}}">Profile</a></li>
      <li class="list-group-item"><a href="{{ URL::to('logs') }}"> Logs</a</li>
    </ul>

例如。 $id可能为1,那么会路由到中的show方法 ProfileController.php

             public function show($id){
                    $users = User::find($id);
                    return view('profile.index',compact('users'));
                }