【发布时间】:2020-09-13 05:11:39
【问题描述】:
我正在尝试将输入数据从表单中提取到数据库中以运行更新操作。但是,它们是直接指向“$obj->update(request()->all());”行的错误。错误是“在 null 上调用成员函数 update()”。我不太清楚这个错误是什么意思,但我认为这意味着 request()->all() 为空。我想要的输出是在将用户输入更新到数据库后,用户将被重定向到 pageManagement.blade.php,通过 return redirect('/p');然而,当前的输出只是一条错误消息,说明“在 null 上调用成员函数 update()”。
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');
}
这是我的模型 Page.php。
class Page extends Model
{
protected $fillable = ['title', 'URI', 'pageContent'];
}
这是我在 web.php 中的路由。
Route::patch('/page/{URI}','PageController@update');
这是我供用户输入数据的表单。
<form action="/page/{{ $pageContent->URI }}" method="post">
@csrf
@method('PATCH')
<label for="title">Title:</label><br>
<input type="text" id="title" name="title" autocomplete="off" value="{{ $pageContent -> title
}}"><br>
@error('title') <p style="color: red">{{ $message }}</p> @enderror
<label for="URI">URI:</label><br>
<input type="text" id="URI" name="URI" autocomplete="off" value="{{ $pageContent -> URI }}">
@error('URI') {{ $message }} @enderror 页面内容:
页面内容 }}"> @error('pageContent') {{ $message }} @enderror tinymce.init({ 选择器:'#pageContent' })
我的 GitHub 存储库附在下面,因为表单的问题格式看起来有点搞砸了...
https://github.com/xiaoheixi/wfams
感谢您阅读我的问题! :D
【问题讨论】:
-
错误是“在 null 上调用成员函数 update()”意味着 $obj 为 null。似乎 $obj = \App\Page::find($URI);没有返回您期望的结果
-
你在调用request(),但是在这个函数中你没有使用Request,
public function update($URI)所以改成public function update(Request $request, $URI) -
当然,我现在要改变它。
-
我改了,还是不行。
-
更改后会出现哪个错误?