axios通信エラー
解決したいこと
laravelを使ったブログサイトを作っています。
現在、ブログ編集画面を作っていて、あとは更新ボタンを押してブログが更新されれば完成なのですが、そこでエラーが出ました。
発生している問題・エラー
Undefined array key \"id\"
該当するソースコード
エラー箇所
$post = Post::find($inputs['id']);
PostController
public function update(PostRequest $request, int $id)
{
$inputs = $request->all();
\DB::beginTransaction();
$post = Post::find($inputs['id']); // エラー箇所
$post->fill([
'title' => $inputs['title'],
'content' => $inputs['content'],
'is_published' => $inputs['is_published'],
]);
$post->tags()->detach();
preg_match_all('/([a-zA-Z0-90-9ぁ-んァ-ヶー一-龠]+)/u', $request->tagCategory, $match);;
$tags = [];
foreach ($match[1] as $tag) {
$found = Tag::firstOrCreate(['tag_name' => $tag]);
array_push($tags, $found);
}
$tag_ids = [];
foreach ($tags as $tag) {
array_push($tag_ids, $tag['id']);
}
$post->save();
$post->tags()->syncWithoutDetaching($tag_ids);
if ($request->image != null) {
if ($request->image->isValid()) {
$image = new Image;
$filename = $request->image->store('public/image');
$image->image = basename($filename);
$image->post_id = $post->id;
$image->save();
}
}
\DB::commit();
if ($post->is_published == 1) {
\Session::flash('err_msg', 'ブログを更新しました');
} else {
\Session::flash('err_msg', 'ブログをアーカイブに保存しました');
}
}
EditComponent.vue
methods: {
....省略
update(post) {
if (window.confirm("更新してよろしいですか?")) {
const content = this.$refs.toastUiEditor.invoke("getMarkdown");
if (content === "") {
alert("本文が入力されていません");
return;
} else if (this.title === "") {
alert("タイトルが入力されていません");
return;
} else if (this.title.length > 255) {
alert("タイトルは255文字以内にしてください");
return;
} else if (this.is_published === "") {
alert("公開設定を選択してください");
return;
}
const id =this.post.id;
const data = new FormData();
data.append("imageData", this.uploadFile);
data.append("title", this.title);
data.append("content", content);
data.append("is_published", this.is_published);
data.append("tagCategory", this.tagCategory);
data.append("id", id);
axios
.put("/posts/" + id, data)
.then((res) => {
console.log(res);
this.posts = res.data.posts;
window.location = "/";
})
.catch((error) => {
console.log(error);
console.log(error.response.data);
});
} else {
return false;
}
},
},
自分で試したこと
https://teratail.com/questions/347238
"id"をもたない配列があることが原因のようですが、コントローラのエラー箇所で使われるidに配列が関係しているのかがよく分からず対処法に困っています。
0