Laravel 5.4 Errore interno: imansible recuperare il valore predefinito

Ho un module che invia i dati al database. E invia i dati al database. Ma Laravel produce un errore quando tenta di redirect a un altro metodo nello stesso controller.

ReflectionException in RouteDependencyResolverTrait.php line 57: Internal error: Failed to retrieve the default value 

inserisci la descrizione dell'immagine qui

Ecco il controller che uso. Si prega di verificare il metodo del public function store(Request $request) .

 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Inbox; class ContactUsController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { return view('pages.contactus'); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // validate the data // store the data in the database // redirect to another page $this->validate($request, [ 'name' => 'required|max:255', 'email' => 'required', 'telephone' => 'required', 'message' => 'required', ]); $inbox = new Inbox; $inbox->name = $request->name; $inbox->email = $request->email; $inbox->telephone = $request->telephone; $inbox->message = $request->message; $inbox->isnew = 1; $inbox->category = $request->category; $inbox->save(); // redirects to the route //return redirect()->route('contactus.show', $inbox->id); return redirect()->action( '[email protected]', ['id' => 11] ); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { print_r($id); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // } } 

E ho provato, entrambi i methods seguenti in due diverse occasioni. Ma Laravel mostra lo stesso errore each volta.

 return redirect()->route('contactus.show', $inbox->id); return redirect()->action( '[email protected]', ['id' => 11] ); 

Ed ecco il file di path web.php .

 Route::get('contactus', '[email protected]'); Route::get('contactus/show', '[email protected]'); Route::post('contactus/store', '[email protected]'); 

Non ho idea di cosa causa questo problema. Qualsiasi suggerimento sarà utile.

Grazie!

Stai passando il valore id al router nel reindirizzamento, ma non stai dicendo al router di usare questo valore nel path. Pertanto, il router non sa di passare il valore id nel metodo show .

Cambia il path per assomigliare a questo:

 Route::get('contactus/{id}', '[email protected]'); 

Quindi il tuo reindirizzamento dovrebbe funzionare, e dovresti essere reindirizzato a (usando l'ID del tuo esempio) /contactus/11 .

Non hai il $id definito sulla rotta. Puoi aggiungerlo alla rotta con:

 Route::get('contactus/show/{id}', '[email protected]'); 

O

Puoi passarlo come parametro get e recuperarlo nella richiesta:

 public function show(Request $request) { print_r($request->input('id')); } 

Ho avuto lo stesso errore ed era perché c'era anche la $request parametro invece di Request $request