提交用户名时出现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输入了用户名到用户名,但是当我尝试输入像用户那样的用户名时,会出现错误。我想确保输入的用户名与登录用户输入的详细信息一致。我最后一次这样做,输入的用户名每次都会创建新的记忆标记。
答案 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)。 如果没有,请在同一控制器中写入该功能。
这可能是错误。