by Anonymous » 01 Jan 2025, 23:50
Ich versuche, ein FormData-Javascript-Objekt über die Axios-Bibliothek zu übermitteln und kann es nicht zum Laufen bringen, da es ein boolesches Feld (is_active) gibt, das als boolescher Wert an meine API gesendet werden muss und das FormData-Objekt es in einen String konvertiert!
Ich habe versucht, es ohne FormData zu machen und dann klappt es perfekt!
Jeder kennt den besten Weg damit es funktioniert? Eigentlich habe ich bei meiner Laravel-Anfrage, das Feld zu reparieren, wirklich schlechte Arbeit geleistet ... Ich denke nicht, dass es die beste Idee ist, aber im Moment funktioniert es!
Hat jemand eine gute Lösung dafür?
Es gibt meinen aktuellen Arbeitscode, aber ich würde ihn gerne verbessern!
Mein Controller und meine Anfrage:
PS: I Ich habe dieses IF für die $rules-Funktion erstellt, um das boolesche Problem zu beheben ... Wenn ich es als Zeichenfolge weitergeben würde, hätte ich ein Problem mit meiner Datenbank, in der das Feld boolesch sein muss, und ich musste auch meine boolesche Validierung für dieses Feld< entfernen /strong>
Code: Select all
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;
}
}
Da ist jetzt mein Javascript-Code
PS: I Ich arbeite mit Diensten, sodass mein createPost meinen Axios-Client auslöst, der die Anfrage stellt[/b]
Code: Select all
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)
Ich versuche, ein FormData-Javascript-Objekt über die Axios-Bibliothek zu übermitteln und kann es nicht zum Laufen bringen, da es ein boolesches Feld (is_active) gibt, das als boolescher Wert an meine API gesendet werden muss und das FormData-Objekt es in einen String konvertiert!
Ich habe versucht, es ohne FormData zu machen und dann klappt es perfekt!
Jeder kennt den besten Weg damit es funktioniert? Eigentlich habe ich bei meiner Laravel-Anfrage, das Feld zu reparieren, wirklich schlechte Arbeit geleistet ... Ich denke nicht, dass es die beste Idee ist, aber im Moment funktioniert es!
Hat jemand eine gute Lösung dafür?
Es gibt meinen aktuellen Arbeitscode, aber ich würde ihn gerne verbessern!
Mein Controller und meine Anfrage:
[b]PS: I Ich habe dieses IF für die $rules-Funktion erstellt, um das boolesche Problem zu beheben ... Wenn ich es als Zeichenfolge weitergeben würde, hätte ich ein Problem mit meiner Datenbank, in der das Feld boolesch sein muss, und ich musste auch meine boolesche Validierung für dieses Feld< entfernen /strong>
[code]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;
}
}
[/code]
Da ist jetzt mein Javascript-Code
PS: I Ich arbeite mit Diensten, sodass mein createPost meinen Axios-Client auslöst, der die Anfrage stellt[/b]
[code]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)
[/code]