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

时间:2016-05-31 13:37:00

标签: php laravel

我对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。 但我不确定这是否是正确的方法,我想我可能在这里完全错误的路径

可以真正使用所有帮助

提前致谢!

2 个答案:

答案 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]);
}