Laravel 将当前用户 ID 传递给控制器
Laravel pass current user id to controller
所以基本上我发送了一个表单,在这个表单中我有 3 个字段。 user_id 我需要另一个字段。所以我决定通过后端而不是将它放在 HTML 中,因为人们可以操纵它。
<form action="{{ route('events.store', Auth::user() ) }}" method="post">
但每当我 dd($request)
在 events.store
时,它会向我显示:
+query: ParameterBag {#59 ▼
#parameters: array:1 [▼
1 => null
]
}
这是对的,因为我有 id 1。
为了证明这一点,我使用了 devtools 来操作表单操作并放置了一个我自己命名的自定义值 "testing"。像这样:
<form action="http://192.168.1.14/public/calendar?testing" method="post"">
这将输出
+query: ParameterBag {#59 ▼
#parameters: array:1 [▼
"testing" => null
]
}
如何访问该 ID?我怎样才能让它不可操纵?
问题2,如何使用那个字段来存储呢?我是这样做的:
Event::create(
$request->validate([
'name' => 'required',
'description' => 'required',
'event_date' => 'required'
])
);
我希望它可能是这样的:
'user_id' => $request->user_id
也有要求
感谢您的帮助
如果您需要当前登录的用户,那么这比通过表单传递或在 URL 中手动传递要容易得多。
您可以使用:
$request->id()
$request->user()->id
auth()->user()->id
auth()->id()
所有 return 当前用户 ID,只需确保您的路由受到 auth
保护,这意味着您使用 auth
中间件。
-- 添加
我会在事件的用户模型中添加一个关系,我想它是一对多的,所以这个:
public function events()
{
return $this->hasMany(Event::class);
}
然后在你的控制器中,你可以这样存储它:
auth()->user()->events()->create($request->validate([
'name' => 'required',
'description' => 'required',
'event_date' => 'required'
]));
所以基本上我发送了一个表单,在这个表单中我有 3 个字段。 user_id 我需要另一个字段。所以我决定通过后端而不是将它放在 HTML 中,因为人们可以操纵它。
<form action="{{ route('events.store', Auth::user() ) }}" method="post">
但每当我 dd($request)
在 events.store
时,它会向我显示:
+query: ParameterBag {#59 ▼
#parameters: array:1 [▼
1 => null
]
}
这是对的,因为我有 id 1。
为了证明这一点,我使用了 devtools 来操作表单操作并放置了一个我自己命名的自定义值 "testing"。像这样:
<form action="http://192.168.1.14/public/calendar?testing" method="post"">
这将输出
+query: ParameterBag {#59 ▼
#parameters: array:1 [▼
"testing" => null
]
}
如何访问该 ID?我怎样才能让它不可操纵?
问题2,如何使用那个字段来存储呢?我是这样做的:
Event::create(
$request->validate([
'name' => 'required',
'description' => 'required',
'event_date' => 'required'
])
);
我希望它可能是这样的:
'user_id' => $request->user_id
也有要求
感谢您的帮助
如果您需要当前登录的用户,那么这比通过表单传递或在 URL 中手动传递要容易得多。
您可以使用:
$request->id()
$request->user()->id
auth()->user()->id
auth()->id()
所有 return 当前用户 ID,只需确保您的路由受到 auth
保护,这意味着您使用 auth
中间件。
-- 添加
我会在事件的用户模型中添加一个关系,我想它是一对多的,所以这个:
public function events()
{
return $this->hasMany(Event::class);
}
然后在你的控制器中,你可以这样存储它:
auth()->user()->events()->create($request->validate([
'name' => 'required',
'description' => 'required',
'event_date' => 'required'
]));