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

时间:2016-04-21 00:20:26

标签: php laravel laravel-5.2

提交用户名时出现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是一个为首次登录用户输入用户名的表单,条件有效,我通过My​​SQL Workbench输入了用户名到用户名,但是当我尝试输入像用户那样的用户名时,会出现错误。我想确保输入的用户名与登录用户输入的详细信息一致。我最后一次这样做,输入的用户名每次都会创建新的记忆标记。

3 个答案:

答案 0 :(得分:0)

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

如果是这种情况,那么:

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

User::find($id);

答案 1 :(得分:0)

替换

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

使用:

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

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

答案 2 :(得分:0)

首先检查是否在UsernameController中写入了getById($ id)。 如果没有,请在同一控制器中写入该功能。

这可能是错误。