[英]How do I redirect to another page after form submission in Laravel
形式
當我提交表單時,它會重定向回表單本身,有人可以幫助我嗎?
<form action="/jisajili" method="POST">
@csrf
<div class="card-panel z-depth-5">
<h5 class="center red-text">Jiunge Nasi</h5>
<div class="input-field">
<i class="material-icons prefix">account_circle</i>
<input type="text" name="username" class="validate">
<label>Jina lako</label>
</div>
<div class="input-field">
<i class="material-icons prefix">phone</i>
<input type="number" name="phone" class="validate">
<label>Nambari ya simu</label>
</div>
....
</p>
<input type="submit" name="submit" value="Jiunge" class="btn left col s12 red">
Controller
class registration extends Controller{
public function create(){
return view('jisajili.jiunge');
}
public function store(Request $request){
$reg = new regist;
$reg->jina = $request->input('username');
$reg->simuNumber = $request->input('phone');
$reg->email = $request-> input('email');
$reg -> password = bcrypt($request->input('password'));
$cpassword = $request -> input('cpassword');
$reg->save();
$validated = $request->validate([
'name' => 'required|unique:posts|max:10',
'body' => 'required',
]);
return redirect('home');
}
}
我要做的是在將 object 添加到數據庫之前首先檢查數據要求。 此外,我會將模型的列添加到 Model 文件中,以使用帶有數組參數的Object::create
function。
我建議在刀片文件中使用路由。 我注意到你使用了action="/route"
。 您要做的是在路由文件中使用->name('route_name')
命名您的路由。 通過全局路由 function route="{{ route('route_name') }}"
在刀片文件中使用它們。
<?php
class PostController extends Controller
{
public function index()
{
return view('post.create');
}
public function store(\Illuminate\Http\Request $request)
{
$validator = Validator::make(
$request->all(),
[
'name' => 'required|unique:posts|max:10',
'body' => 'required'
]
);
// Go back with errors when errors found
if ($validator->fails()) {
redirect()->back()->with($validator);
}
Post::create(
[
'name' => $request->get('name'),
'body' => $request->get('body')
]
);
return redirect()
->to(route('home'))
->with('message', 'The post has been added successfully!');
}
}
之后你可以做的是將自定義錯誤添加到 controller 或將它們添加到你的刀片文件中。 您可以在Laravel 的文檔中找到更多相關信息。
由於驗證錯誤,它會將您重定向回來。
如 laravel 文檔https://laravel.com/docs/7.x/validation#rule-confirmed中所述,將密碼確認名稱從cpassword
更改為password_confirmation
將您的 controller 更新為:
public function store(Request $request){
$validated = $request->validate([
'username' => 'required',
'phone' => 'required',
'email' => 'required',
'password' => 'required|confirmed'
]);
$reg = new regist;
$reg->jina = $request->input('username');
$reg->simuNumber = $request->input('phone');
$reg->email = $request-> input('email');
$reg -> password = bcrypt($request->input('password'));
$reg->save();
return redirect('home');
}
在您的刀片中添加以下內容以顯示驗證錯誤:
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.