hi,我在视图/etc/hosts
内创建了一个表单,其中包含字段create_registrazione.blade.php
和'email'
,当我按下'password'
按钮时,它应该带我到用户页面, (显然,数据库中存在电子邮件,密码和用户名),但是当我按下'accedi'
按钮时,
我收到此错误:
'accedi'
代码下方:
路线:
Missing required parameters for [Route: utente.show] [URI: registrazione/{utente}]. (View: C:\xampp\htdocs\boxe\resources\views\registrazione\create_registrazione.blade.php)
控制器:
Route::get('/registrazione','RegistrazioniController@create')->name('registrazione.create');
Route::post('/registrazione/store','RegistrazioniController@store')->name('registrazione.store');
Route::get('/registrazione/{utente}','RegistrazioniController@show')->name('utente.show');
查看:
public function create(tabella_utenti $utente)
{
return view('registrazione.create_registrazione',compact('utente'));
}
//2(salvataggio dati nel DB)
public function store(tabella_utenti $utente)
{
$this->validate (request(),[
'email' => 'required',
'password' => 'required',
'NomeUtente' => 'required'
]);
$utente=tabella_utenti::create(request(['email','password','NomeUtente']));
//richiamo l'id dell'utente
$utenteId=$utente->id;
return redirect(route('utente.show',compact('utenteId')));
}
public function show(tabella_utenti $utente)
{
return redirect(route('utente.show',compact('utente')));
}
答案 0 :(得分:1)
您应该这样做
return redirect(route('utente.show',['utente'=>$utenteId]));
代替您现在正在做的事情:
return redirect(route('utente.show',compact('utenteId')));
如果您使用的是laravel 5.5+,那么最好只使用此功能:
// $utenteId=$utente->id;
return redirect(route('utente.show',compact('utente')));
编辑:
这个问题比关于路由模型绑定的问题还要重要。
解决方案:
将变量从utente
重命名为user
,这样应该可以。
Route::get('/registrazione/{user}','RegistrazioniController@show')->name('utente.show');
在您的控制器中,您可以这样做:
public function show(tabella_utenti $utente)
{
$utente = tabella_utenti::find($utente); //Since $utente is just the user id here
return redirect(route('utente.show',compact('utente')));
}
第三种方法是创建自定义路由模型绑定。
在RouteServiceProvider.php中,您可以添加以下内容:
public function boot()
{
parent::boot();
Route::model( 'utente', tabella_utenti::class);
}
有关更多信息,请检查route model binding。
答案 1 :(得分:1)
您的重定向中存在错误。请查看Routing official documentation,以获取更多见解。您必须从以下位置更改代码
return redirect(route('utente.show',compact('utenteId')));
收件人:
return redirect()->route('utente.show',['utente' => $utenteId]);
使其起作用。因为您的路线/registrazione/{utente}
想要'utente'作为参数,但是compact
函数将返回类似['utenteId' => 1]
的数组,这就是抛出Missing required parameters
错误的原因