当我点击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
如何解决这个问题?
答案 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
答案 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)
个人资料{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'));
}