通过返回重定向返回更新请求传递数据



我试图允许用户在提交表单后更新他们的信息,但没有选中某个框。所有内容都在同一个页面中,我通过返回一条消息来控制不同的模态,这会触发一个脚本来打开不同的模态。

出于某种原因,我似乎无法将ID或电子邮件传递到下一步。有人能帮忙吗?

每当我尝试时,我都会得到以下错误:

未定义变量:引导

知道吗?

谢谢!!!

文件:

  • web.php
  • index.blade.php
  • LeadsController.php
  • Leads.php

Web.php

Route::post('/', [
'uses' => 'LeadsController@store',
'as' => 'leads.store'
]);
Route::patch('/{email}', [
'uses' => 'LeadsController@update',
'as' => 'leads.update'
]);

索引.刀片.php

<html>
<div id="contact" class="modal fade">
<div class="modal-dialog modal-content modal-lg">
<div class="modal-body">
<form id="form" class="form" action="/" method="post" accept-charset="utf-8">
{{ csrf_field() }}
<input type="email" name="email" value="{{ old('email') }}">
<input type="checkbox" name="newsletter">
<button type="submit">Submit</button>
</form>
</div>
</div>
</div>
@if(session()->has('message'))
<div id="sign_up" class="modal fade">
<div class="modal-dialog modal-content modal-lg">
<div class="modal-body">
<form method="post" action="{{ route('leads.update', $leads->email) }}">
{{ csrf_field() }}
{{ method_field('PATCH') }}
<input type="checkbox" name="newsletter">
<button type="submit">Submit</button>
</form>
</div>
</div>
</div>
@endif
</body>
</html>

LeadsController.php

public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'email'        => 'required|email',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput($request->all);
} else {
try {
$leads = new Leads;
$leads->email        = $request->email;
$leads->newsletter   = $request->newsletter;
$leads->save();
if($request->newsletter == ''){
return redirect()->back()->with('message','sign up')->withInput($request->all)->with($leads->email, $request->get('email'));
}
if($request->newsletter == 'true'){
return redirect()->back()->with('success','success');
}
} catch (Exception $e) {
return response()->json(
[
'status' => false,
'error' => base64_encode($e->getMessage()),
],
Status::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
public function update($email)
{
$leads = Leads::find($email);
$leads->newsletter = $input('newsletter');
$leads->save();
return redirect()->back()->with('success','success');
}

Leads.php

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Leads extends Model
{
protected $table = 'my_renamed_table';
public $timestamps = false;
protected $fillable = ['email', 'newsletter'];
}

感谢您的帮助和提出的问题!你把我推向了正确的方向。

以下是我解决问题的方法:

我必须纠正自己是如何将$电子邮件推送到视图的:

LeadsController

return redirect()
->back()
->with('message','sign up')
->withInput($request->all)
->with('email', $request->get('email'));

请注意,我是如何通过此处的"电子邮件"发送电子邮件的。

然后,我在第二个表单中推送电子邮件,如下所示:

索引

<form method="post" action="{{ route('leads.update', session('email')) }}">

然后,最后,为了再次捕获电子邮件,使用它来找到我想要的线索,我不得不彻底更改更新:

public function update($email)
{
DB::table('my_renamed_table')
->where('email', $email)
->update(['newsletter' => Input::get('newsletter')]);
return redirect()->back()->with('success','success');
}

再次感谢!

最新更新