我有一阵子我不懂,因为我是开发新手。
我正在从多步骤表单收集数据,并希望在我的控件上的一个ajax请求下处理所有表单输入。我成功完成了此操作,但是如果它是ajax的数组,则无法弄清楚如何使用$request
中的数据。
如果可以使用$request->input('name')
,我可以使用它,但是由于我的数据格式,我需要使用$request->input('firstGrant.issue_date')
之类的东西。请提示我哪种挖掘方式。
我的方法:
submitCompany() {
axios.post('/onboarding', {
name: this.step1.name,
type: this.step1.type,
shares_amount: this.step2.shares_amount,
par_value: this.step2.par_value,
firstGrant: {
issue_date: this.step3.firstGrant.issue_date,
certificate: this.step3.firstGrant.certificate,
share_price: this.step3.firstGrant.share_price,
shares_amount: this.step3.firstGrant.shares_amount
}
})
.then(function (response) {
console.log(response);
alert('Information saved!');
})
.catch(function (error) {
console.log(error);
alert('Wrong!');
});
}
我的控制器:
public function store(Request $request)
{
$userId = Auth::user()->id;
$issueDate = $request->input('firstGrant.issue_date'); //How to do it right way?
$certificate = $request->input('firstGrant.certificate');//How to do it right way?
$sharePrice = $request->input('firstGrant.share_price');//How to do it right way?
$sharesAmount = $request->input('firstGrant.shares_amount');//How to do it right way?
$equityGrant = EquityGrant::create([
'user_id' => $userId,
'share_id' => 91,
'vesting' => 0,
'status' => 'active',
'issue_date' => $issueDate,
'certificate' => $certificate,
'share_price' => $sharePrice,
'shares_amount' => $sharesAmount,
]); }
答案 0 :(得分:1)
您可能必须将axios配置为与每个请求一起发送标头,这会使Laravel将请求识别为XHR。完成后,$request->input('x.y')
语句应该可以工作。
Object.assign(axios.defaults.headers, {
'X-Requested-With': 'XMLHttpRequest',
});
如果这仍然不起作用,您可能还想检查axios是否在请求标头中正确includes the CSRF-token。