我有以下表格:
<form @change="updatePipeline">
<select v-model="pipeline.input_mode">
<option value="text">Text</option>
<option value="html">HTML</option>
<option value="json">JSON</option>
</select>
</form>
@change正在呼叫以下內容:
<script setup>
import {useForm} from "@inertiajs/inertia-vue3";
const props = defineProps({
pipeline: {
type: Object,
required: true,
},
});
const form = useForm({
input_mode: props.pipeline.input_mode,
});
const updatePipeline = () => {
form.put(route('pipelines.update', props.pipeline), {
errorBag: 'updatePipeline',
preserveScroll: true,
});
};
該值未在資料庫中更新:
public function update(Request $request, Pipeline $pipeline)
{
$pipeline->update(
$request->validate([
'input_mode' => 'required|string|min:3|max:255',
])
);
return redirect()
->route('pipelines.edit', ['pipeline' => $pipeline])
->with('success', 'Pipeline edited successfully.');
}
我究竟做錯了什么?
uj5u.com熱心網友回復:
請注意對此答案的第一條評論。它取決于版本
我不是慣性專家,但當你這樣做時
$pipeline->update(
$request->validate([
'input_mode' => 'required|string|min:3|max:255',
])
);
它回傳一個void你可以在這里看到的https://laravel.com/api/5.5/Illuminate/Validation/Validator.html#method_validate
您正在尋找的是:
$request->validate(['input_mode' => 'required|string|min:3|max:255'])
$pipeline->update($request->validated());
validated()將回傳經過驗證的專案陣列。
編輯
你input_mode的$fillables模態中有沒有Pipeline?如果沒有,那是你的問題
protected $fillables = ['input_mode'];
uj5u.com熱心網友回復:
所以我在這里問這個問題后不久就發現了這一點。資料庫沒有被持久化的原因是我指pipeline的是v-model屬性。相反,我應該參考form:
<form @change="updatePipeline">
<select v-model="form.input_mode">
<option value="text">Text</option>
<option value="html">HTML</option>
<option value="json">JSON</option>
</select>
</form>
所以,v-model="pipeline.input_mode"我沒有: ,而是:v-model="form.input_mode"。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/473267.html
