我有一個帶有 1 個輸入欄位和一個提交按鈕的簡單表單。
所做的只是獲取用戶輸入,將其與外部 API 匹配,然后將兩條記錄提交到資料庫。
來自外部 API 的回應是 JSON 格式,像這樣,但我只想檢索text下的欄位choices
{
"id": "123",
"object": "tc",
"created": 1655642237,
"model": "text-code",
"choices": [
{
"text": "paragraph text here",
"index": 0,
"logprobs": null,
"finish_reason": "length"
}
]
}
這存盤在一個變數中$complete,因此當我在視圖中訪問它時,我得到了所有這些,而無法僅針對特定元素。
這是我的控制器
public function index()
{
$prompts = Writer::all();
return Inertia::render('Writer', [
'prompts' => $prompts
]);
}
public function store(Request $request)
{
$complete = $start->complete([
'engine' => '002',
'prompt' => $request->input('inputText')
]);
$data = json_decode($complete, true);
Validator::make($request->all(), [
'inputText' => 'required|min:5|max:255|string',
])->validate();
Writer::create([
'request' => $request->input('inputText'),
'response' => $data['choices']
]);
return redirect()->back()->with('message', 'success.');
}
我必須傳遞$complete給該create()方法,因為傳遞$data會出錯
陣列到字串的轉換
和
類 stdClass 的物件無法轉換為字串
但是,如果我return $data['choices']緊跟在變數之后,我會得到僅在下面的欄位choices
視圖很簡單
<div class="card w-100 bg-light mt-4 mb-4" v-for="prompt in $page.props.prompts">
<div class="card-body">
<h5 class="card-title">{{ prompt.request }}</h5>
<p class="card-text">{{ prompt.response }}</p>
</div>
</div>
uj5u.com熱心網友回復:
為了訪問 -array 中的資料$choices(它是一個陣列,而不是字串,這就是您相應地得到錯誤的原因),將您的store-method 中的相應行更改為
Writer::create([
'request' => $request->input('inputText'),
'response' => $data['choices'][0]['text']
]);
但請注意,它$data[ 'choices' ]可能為空,因此在存盤任何值之前,請確保檢查是否存在并提供默認值,例如
$text = $data['choices'][0]['text'] ?? 'my-default-value';
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/492493.html
標籤:javascript php 拉拉维尔 惯性
上一篇:內容分發網路CDN
下一篇:為某個字符之前的句子著色
