提交用户名时出现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. {{ 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: Your username cannot be changed and should include your authentic name </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 中。如果没有,请在同一个控制器中编写函数。
这可能是错误。