控制器中的 BadMethodCallException .php第 107 行:方法 [getById] 不存在


BadMethodCallException in Controller.php line 107: Method [getById] does not exist

提交用户名时出现Method [getById] does not exist错误。

用户名控制器:

use Auth;
use MostWanted'Models'User;
use Illuminate'Http'Request;

class UsernameController extends Controller
{
public function getUsername()
{
    return view('dashboard.getusername');       
}
public function postUsername(Request $request)
{   
    $id = Auth::id(); 
    $user = $this->getById($id);
    $this->validate($request, [
    'username' => 'required|unique:users|regex:/^[A-Za-z0-9.]+$/|max:50',
    ]);
    $user->username = $request->input('username');
    return view('home');
}
}

路线:

Route::group(['middleware' => ['web']], function () {
/** 
*Entering Username
*/
Route::get('/choose_username', [
'uses' => ''MostWanted'Http'Controllers'UsernameController@getUsername',
'as' => 'dashboard.getusername',
]);
Route::post('/choose_username', [
'uses' => ''MostWanted'Http'Controllers'UsernameController@postUsername',
]);
});

getusername.blade.php:

@extends('templates.default')
@section('title')
MostWanted | Enter your username
@endsection
@section('content')
<div style="min-width: 800px; margin: 0 auto; position: relative; top: 75px;">
<div class="row" style="width: 600px; margin: 0 auto; border: 2px solid #000; padding: 40px;">
    <div class="col-lg-6" style="width: 600px; color: #999; padding: 44.5px 0;">
    <h3 style="color: #000; margin-top: 0; margin-bottom: 10px;">Enter a username</h3>
        <form class="form-vertical" role="form" method="post" action="{{ route('dashboard.getusername') }}">
        <div>
            <div>Your public username is the same as your Profile address:
                <div>
                <ul>
                    <li>
                    <div>mostwanted.com/<span id="display_name">
                    <script>
                    $('#username').keyup(function () {
                    $('#display_name').text($(this).val());
                    });
                    </script>
                    </span></div>
                    </li>
                </ul>
                </div>
            </div>
                <div class="form-group {{ $errors->has('username') ? ' has-error' : '' }}">
                    <label for="username" class="control-label">Choose a username</label>
                    <input style="width: 456px;" placeholder="e.g.&nbsp;{{ Auth::user()->getUsernameOrName() }}" type="text" name="username" class="form-control" id="username" value="">
                        @if ($errors->has('username'))
                            <span class="help-block" style="font-size: 12px; margin-bottom: 0;">{{ $errors->first('username') }}</span>
                        @endif
                </div>
                <div>Note:&nbsp;Your username cannot be changed and should include your authentic name&nbsp;</div>
        </div>
            </div>
            <div class="form-group" style="margin-top: 15px;">
                <button style="float: right;" type="submit" class="btn btn-primary">Save username</button>
            </div>
        <input type="hidden" name="_token" value="{{Session::token()}}">
        </form>
    </div>
</div>  
</div>
@stop

我定义$id错了还是什么? getusername.blade.php 是一种为首次登录用户输入用户名的表单,条件有效,我已经通过 MySQL Workbench 在数据库中输入用户名,但是当我尝试像用户一样输入用户名时,会出现错误。我想确保输入的用户名与登录用户输入的详细信息保持一致。我上次这样做时,输入的用户名每次都会创建新的记住令牌。

如果不查看控制器代码的其余部分,我只能假设您正在尝试通过 $id 获取用户模型的实例。

如果是这种情况,那么:

没有方法getById(),我想你的意思是find($id),也是一个静态方法,需要像这样调用:

User::find($id);

替换

$user = $this->getById($id);

跟:

$user = User::find($id);

说明:在控制器的上下文中使用$this将在控制器中查找getById的方法,该方法不存在。

首先检查 getById($id) 是否写在 UsernameController 中。如果没有,请在同一个控制器中编写函数。

这可能是错误。