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;
}
}
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)