首页 文章

Laravel将用户ID传递给视图/控制器

提问于
浏览
2

我对laravel相当新,我在我的项目中实现了一个系统,以便用户可以向对方发送“dm” . 但现在在创建视图中有复选框,您可以在其中检查要向其发送dm的用户 . 我在我的控制器的创建函数中得到了这样的用户:

$users = User::where('id', '!=', Auth::id())->get();

我的目标是用户可以在其他视图中单击其他用户名,并选择“send 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函数中填充$ userid . 但我不确定这是正确的方法,我想我可能在这里完全错误的道路

可以真正使用所有的帮助

提前致谢!

2 回答

  • 0

    如果你想使用链接并发送一个用户dm这里是一种方法 . 您需要一个dm视图并与用户一起查看 . 这是用户:

    <a href"{{ route('createMessage', ['user_id' => $user->id]) }}">Send message to: {{ $user->name }}</a>
    

    您将user_id作为route参数发送,该参数包含您要向其发送消息的用户的ID($ user-> 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]);
    }
    
  • 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
     }
    

    There is another solution, you can pass on with a hidden input

相关问题