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