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

时间:2017-09-14 07:44:04

标签: php laravel laravel-5 laravel-5.3

当我点击home.blade.php中的“个人资料”时,我遇到错误,“App \ Http \ Controllers \ ProfileController :: show()缺少1个参数”如何解决此错误?

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)
    {
        //
    }
}

这是Profile文件夹的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

如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

使用时

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

输出应如下所示: artisan route:list output

答案 1 :(得分:2)

这种情况会有很多解决方案。

  

第一个解决方案

您可以将路线更改为

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

第二个解决方案

使用相同的路线,您可以更改控制器,如下所示

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

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

}

我希望这些答案可以帮助你解决问题

答案 2 :(得分:0)

here is the route list

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

答案 3 :(得分:0)

路线

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'));
                }