4 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
您正在使用Request ,因此您需要在函數(shù)中調(diào)用Requestupdate() ,您可以使用 For 方法where():
public function update(Request $request)
{
? ? $data = $request->validate([
? ? ? ? 'title' => 'required',
? ? ? ? 'URI' => 'required|min:5|max:10',
? ? ? ? 'pageContent' => 'required'
? ? ]);
? ? $obj = \App\Page::where('URI', $request->URI)
? ? ? ? ->update([
? ? ? ? ? ? 'title' => $request->title,?
? ? ? ? ? ? 'pageContent' => $request->pageContent
? ? ? ? ]);
? ? return redirect('/p');
}

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
錯(cuò)誤的意思是find返回了null。這是有道理的,因?yàn)閒ind我們將嘗試搜索主鍵字段而不是URI字段。
我不會(huì)使用URI作為該記錄的標(biāo)識(shí)符。我會(huì)用它的id.
<form action="/page/{{ $pageContent->id }}" method="post">
Route::patch('/page/{page}','PageController@update');
這將使事情變得相當(dāng)簡(jiǎn)單?,F(xiàn)在您可以輕松地使用路由模型綁定來(lái)獲取此信息Page:
use App\Page;
...
public function update(Page $page)
{
$data = request()->validate([
'title' => 'required',
'URI' => 'required|min:5|max:10',
'pageContent' => 'required'
]);
$page->update(request()->all());
return redirect('/p');
}
這將確保這$page是一個(gè)現(xiàn)有的模型實(shí)例。既然如此,你就可以調(diào)用update它。只需確保title,URI和pageContent是“可填充的”。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
我看到你的github https://github.com/xiaoheixi/myFirstWebsite
在控制器中使用模型綁定的示例:
Route::patch('/page/{URI}','PageController@update');
Route::get('{URI}', 'PageController@getPage');
public function update($URI)
{
$data = request()->validate([
'title' => 'required',
'URI' => 'required|min:5|max:10',
'pageContent' => 'required'
]);
$obj = \App\Page::find($URI);
$obj->update(request()->all());
return redirect('/p');
}
將控制器更改為:
use App\Page;
public function getPage(Page $URI)
{
return view('page_view', compact('URI'));
}
public function update(Request $request, Page $URI)//match $URI to {URI}
{
$data = $request->validate([
'title' => 'required',
'URI' => 'required|min:5|max:10|unique:pages,URI,'.$URI->id, //you dont want a duplicate URI when you search a page by URI
'pageContent' => 'required'
]);
$URI->update($request->all());
return redirect('/p');
}
在刀片中:
<form action="/page/{{ $pageContent }}" method="post">
在模型中:
use Illuminate\Database\Eloquent\Model;
class Page extends Model
{
protected $fillable = ['title', 'URI', 'pageContent'];
public function getRouteKeyName()
{
return 'URI';
}
}

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
我建議您使用驗(yàn)證規(guī)則“ exists ”驗(yàn)證 URI 是否存在:
$data = request()->validate([
'title' => 'required',
'URI' => 'required|min:5|max:10|exists:pages,URI',
'pageContent' => 'required'
]);
現(xiàn)在,如果 URI 不存在于您的頁(yè)面表中,laravel 將返回一個(gè)驗(yàn)證錯(cuò)誤,并顯示消息,如“指定的 URI 不存在于表頁(yè)面中”
- 4 回答
- 0 關(guān)注
- 247 瀏覽
添加回答
舉報(bào)