【问题标题】:"Type error: Too few arguments to function App\Http\Controllers\UserController::attendance(), 0 passed and exactly 1 expected"“类型错误:函数 App\Http\Controllers\UserController::attendance() 的参数太少,通过了 0,预期正好 1”
【发布时间】:2018-05-23 10:35:46
【问题描述】:

我的数据库中有两个表,分别是用户表和出勤表。我现在要做的是我想根据用户在与他们的个人资料链接的出勤视图中显示数据库中的出勤数据。这是我在 userController 中的考勤功能。

 public function attendance($id)
    {
        $user = UserProfile::findOrFail($id);
        $this->authorize('modifyUser', $user);

        return view ('user.attendance', ['user'=>$user]);
    }

这是我的出勤视图。

Route::get('/attendance/', ['as' => 'user.attendance', 'uses' => 'UserController@attendance']);

这是我的出勤视图。

@extends('layouts.app')
@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-12">
                <h1><i class="fa fa-university"></i> Attendance</h1>
            </div>

            <div class="row">
                <table class="table table-bordered">
                    <tr>
                        <th>No</th>
                        <th>Date</th>
                        <th>Time</th>
                        <th>Present</th>
                    </tr>

                    <?php $no=1; ?>

                    <tr>
                        <td>{{ $no++ }}</td>
                        <td>{{$user->attendance->date}}</td>
                        <td>{{$user->attendance->time}}</td>
                        <td>{{$user->attendance->present}}</td>
                    </tr>
                </table>
            </div>
        </div>
    </div>
@stop

这是我遇到的错误。 类型错误:函数 App\Http\Controllers\UserController::attendance() 的参数太少,通过了 0,预期正好 1”。 我是 laravel 新手。

【问题讨论】:

  • 您有什么要求?我看不懂

标签: php laravel


【解决方案1】:

您收到此错误是因为 attendance() 方法需要一个 ID 而您没有传递它。将路线更改为:

Route::get('attendance/{id}', ['as' => 'user.attendance', 'uses' => 'UserController@attendance']);

并在创建attendance() 方法的链接时传递一个ID:

{{ route('user.attendance', ['id' => 1]) }}

或者:

{{ url('attendance/1') }}

如果要获取当前登录用户的ID,请不要传递ID。请改用auth()-user()

public function attendance()
{
    $this->authorize('modifyUser', auth()->user());

    return view ('user.attendance');
}

【讨论】:

  • 如果我用用户 id 2 登录,它可以显示用户 id 2 的出席情况吗?链接到出勤视图我喜欢这样 >> ' 出勤率'
  • @Htoo 查看更新后的答案。您不需要将当前经过身份验证的用户 ID 传递给方法或视图。只需使用auth()-&gt;user() 获取当前用户实例并使用auth()-&gt;id() 获取他的ID。
  • Mezein,我已经像您向我展示的那样进行了编辑,它似乎可以正常工作,但是当我通过单击按钮进入出勤视图时。在考勤视图中,它显示,您没有权限。
  • @Htoo 这与您在问题中描述的问题无关。它与modifyUser 政策有关。因此,您需要修复该策略。如果您自己无法做到这一点,请创建另一个问题并在此处发布政策和相关代码。
猜你喜欢
  • 2019-04-21
  • 2019-10-29
  • 2020-04-22
  • 2019-07-06
  • 2020-12-11
  • 2020-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多