我对laravel相当新,我在我的项目中实现了一个系统,以便用户可以发送" dm"对彼此。但现在在创建视图中有复选框,您可以在其中检查要向其发送dm的用户。我在我的控制器的创建函数中得到了这样的用户:
$users = User::where('id', '!=', Auth::id())->get();
我的目标是用户可以点击其他视图中的其他用户名,并选择一个选项"发送dm"或者其他的东西。但我不知道如何将该ID传递给我的控制器中的create函数。我应该隐藏复选框并选择传递的ID吗?或者我的游戏计划应该在这里?
这是我在控制器中的创建功能
public function create($userid)
{
$users = User::where('id', '=', $userid);
return view('messenger.create', compact('users'));
}
这些是我的路线:
Route::group(['prefix' => 'messages'], function () {
Route::get('/', ['as' => 'messages', 'uses' => 'MessagesController@index']);
Route::get('create/{userid}', ['as' => 'messages.create', 'uses' => 'MessagesController@create']);
Route::post('/', ['as' => 'messages.store', 'uses' => 'MessagesController@store']);
Route::get('{id}', ['as' => 'messages.show', 'uses' => 'MessagesController@show']);
Route::put('{id}', ['as' => 'messages.update', 'uses' => 'MessagesController@update']);
});
问题是我不知道如何在我的create function中填满$ userid。 但我不确定这是否是正确的方法,我想我可能在这里完全错误的路径
可以真正使用所有帮助
提前致谢!
答案 0 :(得分:0)
试试这个:
您的路线:
Route::get('create/{userid}', ['as' => 'messages.create', 'uses' => 'MessagesController@createForm']); // to load the form
Route::post('create/{userid}', ['as' => 'messages.create', 'uses' => 'MessagesController@create']); // to create the DM
使用用户信息加载表单:
public function createForm($userid)
{
$user = User::find($userid);
return view('messenger.create', array("user" => $user));
}
您可以在动作属性中的URL上传递ID,例如:
<form action="create/{{ $user->id }}" method="POST">
创建DM的方法:
public function create($userid)
{
$user = User::find($userid);
//create the DM
}
还有另一种解决方案,您可以传递隐藏的输入
答案 1 :(得分:0)
如果你想使用链接并发送一个用户dm这里是一种方法。您需要一个dm视图并与用户一起查看。 这是用户:
<a href"{{ route('createMessage', ['user_id' => $user->id]) }}">Send message to: {{ $user->name }}</a>
您将user_id作为路由参数发送,该参数包含您要向其发送消息的用户的ID($ user-&gt; id)。 这是路线:
Route::get('/message/create/{user_id}', [
'uses' => 'UsersController@create',
'as' => 'createMessage'
]);
您可以在控制器中的create methond中获取路径参数user_id,如下所示:
public function create($user_id)
{
$user = User:find($user_id);
return view('messenger.create', ['user' -> $user]);
}