我正在尝试建立一个网站,您可以在其中上传游戏并在主页上看到它们,但是由于我需要两步表单,因此无法直接将它们发送到数据库。
我的控制器:
public function createstep1(Request $request)
{
$naam = $request->session()->get('naam');
return view('games.game',compact('naam', $naam))->with('games', game::all());
}
public function postcreatestep1(Request $request)
{
$validatedData = $request->validate([
'naam' => 'required',
'geslacht' => 'required',
]);
if(empty($request->session()->get('naam'))){
return redirect('/game');
}else{
$naam = $request->session()->get('naam');
$naam->fill($validatedData);
$request->session()->put('naam', $naam);
}
return redirect('/newgame');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(Request $request)
{
$naam = $request->session()->get('naam');
return view('games.newgame',compact('naam',$naam));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$game= new Game();
$game->game= $request['game'];
$game->naam= $request['naam'];
$game->geslacht= $request['geslacht'];
$game->save();
return redirect('/game');
}
<div id="newgame" style="height: 500px; width: 250px; float: left;">
<form method="post" name="naam">
@csrf
<input id="naam" name="naam" placeholder="naam">
<select name="geslacht" type="text">
<option name="man">man</option>
<option name="vrouw">vrouw</option>
</select>
<a type="submit"><button>volgende</button></a>
</form>
</div>
<div id="games" style="float: right">
@foreach($games as $game)
{{$game->game}} <br><br>
@endforeach
</div>
<h1>welkom {{$naam}}</h1>
<form method="post">
@csrf
<h3>game invoeren</h3>
<input type="text" id="gamenaam" name="gamenaam" placeholder="game">
<a id="submit" type="post" name="game" href="/newgame/store">
<button>verstuur</button></a>
</form>
Route::get('/', function () {
return view('welcome');
});
Route::get('/newgame', function () {
return view('games.newgame');
});
//Route::post('/newgames', ['as' => '/newgames', 'uses' => 'GameController@create']);
Route::get('/game', 'GameController@createstep1');
Route::post('/game', 'GameController@postcreatestep1');
Route::get('/newgame', 'GameController@create');
Route::post('/newgame/store', 'GameController@store');
我希望它将删除数据库中的游戏+名称和性别,但实际代码会显示错误消息。 这项工作是在学校上学的,但是如果您有任何建议,他们将无法为我提供帮助,或者可以帮助我解决非常棒的问题。
答案 0 :(得分:0)
注册新路由时,您需要指定该路由所针对的HTTP方法。通常Route::get()
没问题,但是由于您要通过表单向控制器方法POST
发送一个postcreatestep1
请求,因此该请求需要通过Route::post()
注册为POST路由
您还可以使用Route::match()
方法声明可用于多个HTTP方法的路由。
要获得all available router methods的概述,Laravel的正式文档是一个很好的起点。