【发布时间】:2019-08-16 23:21:42
【问题描述】:
所以,我有 2 个视图和 2 个控制器。第一个视图,我们称之为“A”,包含在注册帐户时获取所有用户信息的表单。 提交后,第一个控制器,我们称之为“X”,会将这些信息输入作为一个数组捕获,然后返回我的第二个视图,让这些数组通过它称之为“B”。最后这个 B 将向用户展示已经输入的内容,作为评论。
所以这是这样的:
视图 A => 控制器 X => 视图 B => 控制器 Y => 数据库
A 视图:
很抱歉向您展示那些没有代码的图像,但我相信,您只需查看我的 X 控制器就可以理解其结构。
X 控制器:
public function storeRegister(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => ['required', 'string', 'max:255', 'regex:/^[a-zA-Z ]+$/'],
'gender' => ['required', 'string'],
'birth_place' => ['required', 'string', Rule::notIn(['', '0'])],
'birth_date' => ['required', 'date', 'date_format:Y-m-d', 'after:1900-01-01', 'before:today'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'phone_number' => ['required', 'string', 'min:9', 'max:15', 'regex:/^[0-9]+$/', 'unique:users'],
'address_province' => ['required', 'string', Rule::notIn(['', '0'])],
'address_regency' => ['required', 'string', Rule::notIn(['', '0'])],
'address_district' => ['required', 'string', Rule::notIn(['', '0'])],
'specify_address' => ['required', 'string', 'max:75'],
'package_plan' => ['required', 'string'],
]);
if($validator->fails()) {
return back()->withErrors($validator)->withInput();
}
else {
$user = new User();
$user->package_plan = $request->get('package_plan');
$user->name = $request->get('name');
$user->gender = $request->get('gender');
$user->birth_place = DB::table('provinces')
->where('id', $request['birth_place'])->pluck('name');
$user->birth_date = $request->get('birth_date');
$user->address_province = DB::table('provinces')
->where('id', $request['address_province'])->pluck('name');
$user->address_regency = DB::table('regencies')
->where('id', $request['address_regency'])->pluck('name');
$user->address_district = DB::table('districts')
->where('id', $request['address_district'])->pluck('name');
$user->specify_address = $request->get('specify_address');
$user->email = $request->get('email');
$user->phone_number = $request->get('phone_number');
$birth_placeExplode = explode('"', $user->birth_place);
$address_provinceExplode = explode('"', $user->address_province);
$address_regencyExplode = explode('"', $user->address_regency);
$address_districtExplode = explode('"', $user->address_district);
$user->birth_place = $birth_placeExplode[1];
$user->address_province = $address_provinceExplode[1];
$user->address_regency = $address_regencyExplode[1];
$user->address_district = $address_districtExplode[1];
$data = [
'package_plan' => $user->package_plan,
'name' => $user->name,
'gender' => $user->gender,
'birth_place' => $user->birth_place,
'birth_date' => $user->birth_date,
'address_province' => $user->address_province,
'address_regency' => $user->address_regency,
'address_district' => $user->address_district,
'specify_address' => $user->specify_address,
'email' => $user->email,
'phone_number' => $user->phone_number,
];
return view('layouts.pages.review')->with('data', $data);
}
}
如您所见,我将 $data 传递给我的 B 视图。在我的 B 视图中,用户可以看到之前表单中的所有值,因此如果出现拼写错误或类似情况,他们可以返回并修复它,然后再提交给 DB。
B 观点:
<form class="register-form" method="POST" action="{{route('saveRegister')}}">
@csrf
<div id="review" class="form-wrapper text-center">
<div class="form-group-reg">
<p>Paket Dipilih : <span id="package-rev">{{$data['package_plan']}}</span></p>
<p>Nama : <span id="name-rev">{{$data['name']}}</span></p>
<p>Jenis Kelamin : <span id="gender-rev">{{$data['gender']}}</span></p>
<p>Tempat Lahir : <span id="birth_place-rev">{{$data['birth_place']}}</span></p>
<p>Tanggal Lahir : <span id="birth_date-rev">{{$data['birth_date']}}</span></p>
<p>Email : <span id="email-rev">{{$data['email']}}</span></p>
<p>Nomor Telepon : <span id="phone_number-rev">{{$data['phone_number']}}</span></p>
<p>Provinsi : <span id="address_province-rev">{{$data['address_province']}}</span></p>
<p>Kotamadya/Kabupaten : <span id="address_regency-rev">{{$data['address_regency']}}</span></p>
<p>Kecamatan : <span id="address_district-rev">{{$data['address_district']}}</span></p>
<p>Alamat Lengkap : <span id="specify_address-rev">{{$data['specify_address']}}</span></p>
</div>
<div class="form-group-reg">
<a href="/register#identity"><input class="back-button" type="button" value="Back" /></a>
<input id="submit" class="regsubmit form-submit" type="submit" name="submit" value="Submit" />
</div>
</div>
</form>
我想要什么,在 B 中调用的这个数组如何通过另一个控制器存储在我的数据库中,我们称之为“Y”。
我尝试过类似的方法,但没有用 XD:
public function saveReview($data) {
$user = new User();
$user->package_plan = $data['package_plan'];
$user->name = $data['name'];
$user->gender = $data['gender'];
$user->birth_place = $data['birth_place'];
$user->birth_date = $data['birth_date'];
$user->address_province = $data['address_province'];
$user->address_regency = $data['address_regency'];
$user->address_district = $data['address_district'];
$user->specify_address = $data['specify_address'];
$user->email = $data['email'];
$user->phone_number = $data['phone_number'];
$user->save();
return redirect('/');
}
希望我的问题很清楚,非常感谢您的所有回答
【问题讨论】:
-
在
storeRegister你不做$user->save() -
是的,但如果我这样做,它会立即保存到我的数据库中。我创建了我的评论页面,以便用户可以在第二次“提交”之前查看他们的信息
-
在您的视图 B 中,您没有将数据传递给控制器 Y。您的表单只有文本但没有输入。你可以做
<input type="hidden" name="birth_place" value="{{$data['birth_place']}}">等 -
正是我的标题是 XD,我想将数据从视图 B 传递到我的控制器 Y
-
你能回答我的问题吗?这样我就可以投票了