【发布时间】:2014-10-12 18:22:24
【问题描述】:
如果这是重复的,我很抱歉(我到处搜索可能的解决方案),但我只需要知道在 Laravel 中提交表单后如何使用 jquery 代码。
仅供参考:我正在使用 Laravel,当表单凭据正确时,我使用 Redirect::back()。
这是我提交表单时使用的控制器代码:
public function store()
{
$user = array(
'voornaam' => Input::get('voornaam'),
'achternaam' => Input::get('achternaam'),
'email' => Input::get('email'),
'telefoonnummer' => Input::get('telefoonnummer'),
'bedrijfsnaam' => Input::get('bedrijfsnaam'),
'adres' => Input::get('adres'),
'opmerking' => Input::get('opmerking'),
'titel' => Input::get('paginanaam'),
'datum' => Input::get('dedatum'),
'personen' => Input::get('personen'),
);
$data = $user;
$rules = array(
'voornaam' => 'required',
'achternaam' => 'required',
'email' => 'required',
'adres' => 'required',
'bedrijfsnaam' => 'required',
'datum' => 'required',
);
$messages = array(
'voornaam.required' => 'Vul a.u.b. uw voornaam in.',
'achternaam.required' => 'Vul a.u.b. uw achternaam in.',
'email.required' => 'Vul a.u.b. uw emailadres in.',
'adres.required' => 'Vul a.u.b. uw factuuradres in.',
'bedrijfsnaam.required' => 'Vul a.u.b. uw bedrijfsnaam in.',
'datum.required' => 'Selecteer a.u.b. een datum.',
);
if(Input::get('spamcheck'))
{
return 'Stop spamming please.';
}
$validation = Validator::make($data, $rules, $messages);
if ( $validation->fails() )
{
return Redirect::back()->withErrors($validation)->withInput();
} else {
if(Input::get('kopie') === 'ja') {
Mail::send();
} else {
Mail::sendothermail();
}
return Redirect::back();
}
}
我从这个控制器中删除了一些不必要的代码 (fyi),这样你就不会因为我的问题而分心。当用户提交表单并出现错误时,错误会显示在页面顶部。但是,我想做类似的事情:当用户提交表单并且凭据正常时,它会重新加载页面并应该滚动到表单并隐藏表单并显示成功消息而不是表单。
如果这是一个类似问题的重复,请告诉我。
【问题讨论】:
-
你是用ajax提交表单吗?
-
不只是普通的 php。 (在 Laravel 中)
-
所以我想有两种方法可以解决这个问题:1)重定向到页面并使用哈希片段将页面移动到正确的位置,或者 2)在会话中添加一些内容来说明表单已正确提交,然后在您的视图中检查会话变量并根据该变量做任何您想做的事情(注入一些使用
window.scrollTo()的 JS,显示一条消息等) -
实际上我所说的#1 基本上是@Thisis 的答案——基本上不是使用
Redirect::back(),而是使用另一种重定向方法到一个已知的URL。例如,如果您使用命名路由:Redirect::to(URL::route('my.route').'#form') -
哈,我所说的#2 几乎是@Brian 的回答:)