4 回答

TA貢獻1828條經驗 獲得超3個贊
您正在使用Request ,因此您需要在函數中調用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貢獻1877條經驗 獲得超6個贊
錯誤的意思是find返回了null。這是有道理的,因為find我們將嘗試搜索主鍵字段而不是URI字段。
我不會使用URI作為該記錄的標識符。我會用它的id.
<form action="/page/{{ $pageContent->id }}" method="post">
Route::patch('/page/{page}','PageController@update');
這將使事情變得相當簡單。現在您可以輕松地使用路由模型綁定來獲取此信息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是一個現有的模型實例。既然如此,你就可以調用update它。只需確保title,URI和pageContent是“可填充的”。

TA貢獻1802條經驗 獲得超6個贊
我看到你的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貢獻1890條經驗 獲得超9個贊
我建議您使用驗證規則“ exists ”驗證 URI 是否存在:
$data = request()->validate([
'title' => 'required',
'URI' => 'required|min:5|max:10|exists:pages,URI',
'pageContent' => 'required'
]);
現在,如果 URI 不存在于您的頁面表中,laravel 將返回一個驗證錯誤,并顯示消息,如“指定的 URI 不存在于表頁面中”
- 4 回答
- 0 關注
- 253 瀏覽
添加回答
舉報