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 关注
- 143 浏览
添加回答
举报