1. 控制器方法:
public function store(UserRequest $request)
{
return $this->form()->store();
}
2.请求独立验证器类:
public function rules() {
$id= request()->route('user');
if(is_object($id))
$id= $id->id;
return [
// 'email'=> 'required|email|unique:users', //坏,本人修改失败
// 'email'=> 'required|email|unique:users,email,'. Auth::id(), //坏,后台修改失败
'email'=> 'required|email|unique:users,email,'. $id, //好!前后台都可以
];
}
Route::get('/store/{user}', 'YourController@yourMethod');
在这个例子中,{
user}
是一个占位符,它表示当路由被触发时,Laravel会从URL中获取名为user的参数。这个参数可以传递给路由方法(在上面的例子中是yourMethod
)。
当你在视图中使用route('
user')
或者request()->route('
user')
时,Laravel会解析URL并返回对应参数的值。在上面的例子中,如果URL是/
user/123
,那么request()->route('
user')
将返回123
。
请注意,你的实际路由定义可能会有所不同,取决于你的项目需求和路由文件的内容。
然后再解释下
代码使用 is_object()
函数来检查 $id
是否是一个对象。这是因为在 PHP 中,除了基本类型(如字符串、整数、布尔值等)之外,其他类型都可以被视为对象。
如果 $id
是一个对象,那么它的值将是一个对象的实例,该对象可能具有属性和方法。在这种情况下,代码会继续执行并使用 $id
的属性或方法。在这种情况下,代码会尝试获取对象的 id
属性。
如果 $id
不是一个对象,那么代码将不会执行 $id= $id->id;
这行,而会直接使用原始的 $id
值。
这种检查对象的方法在处理从外部来源(如数据库、表单输入、外部API等)接收的数据时非常有用,因为它允许你以安全的方式处理可能以不同形式接收的数据。如果 $id
是一个对象,你可以访问其属性或方法以获取所需的数据;如果 $id
不是一个对象,你可以直接使用原始值而不会引发错误。 谢谢各位的参与,希望对你们有所帮助,写的不好,多多见谅。