FormDataのjavascriptオブジェクトを使ってAxiosライブラリを送信しようとしています。ブール値のフィールド(is_active)が存在するため、 FormDataオブジェクトは文字列に変換しています!FormDataでブール値を送信するJavascript - Vuejs + Laravel app
私はFormDataなしでそれを作ろうとしましたが、それは完全に行く!
どのような体でも動作させるには最良の方法がわかりますか?実際には私のLaravel Requestで現場を修正するために本当に悪い仕事をしました...私はそれが最良のアイデアだとは思いませんが、今のところうまくいきます!
誰にでも良い解決策がありますか?
私の現在の作業コードはありますが、より良いものにしたいと思います!
私のコントローラと私の要求:
PS:私は、IFが$ルールにブール問題を修正するために機能することを行っている...私はそれを文字列として手放す場合、私は私のデータベースどこに問題があるでしょうフィールドはブールでなければならず、
class PostRequest extends FormRequest
{
public function rules()
{
if (in_array($this->get('active'), ['true', 'false'])) {
$this->offsetSet('active', $this->get('active') == 'true');
}
$rules = [
'title' => 'required|string',
'slug' => 'required|alpha_dash|unique:posts,slug',
'photo' => 'required|image',
'publish_date' => 'required|date_format:d/m/Y',
'summary' => 'required',
'content' => 'required',
'author_id' => 'required|exists:authors,id',
'category_id' => 'required|exists:categories,id,flag,posts',
// 'active' => 'boolean',
];
return $rules;
}
}
class PostsController {
public function store(PostRequest $request)
{
try {
$model = new Post($request->all());
$model = $model->save();
} catch (\Exception $e) {
return response()->json($e->getMessage(), 422);
}
return $model;
}
}
今、私のjavascriptのコードがあり、私もその場に自分のブールの検証を削除する必要がありました
PS:私のcreatePostが要求
let data = new FormData()
let record = _.cloneDeep(this.record)
for (var key in record) {
if (record[key] === 'true' || record[key] === 'false')
data.append(key, record[key] === 'true')
else
data.append(key, record[key])
}
return _.isNil(this.record.id) ? createPost(data) : updatePost(data.id, data)