如何将用户ID传递给Laravel表单

时间:2017-08-11 09:38:46

标签: php laravel

我有一个用于编辑用户偏好的页面(管理部分)。在那里,我想获取用户的ID。编辑页面的网址为http://localhost:8000/admin/editUser/27,因此ID为27。

这些是路线:

Route::get('admin/editUser/{id}', 'AdminController@editUser');

Route::post('changeRoleType', 'AdminController@changeRoleType');

和表格:

{!! Form::open(['url' => 'changeRoleType', 'method' => 'POST']) !!}

我的问题是:如何在控制器中获取此用户的ID?当我做这样的事情时:

public function changeRoleType($id)
    {
        dd($id);
    }

我希望它显示该用户的ID。在这种情况下,这将是27(来自给定的链接)。

4 个答案:

答案 0 :(得分:3)

你应该试试这个:

Route::get('admin/editUser/{id}', 'AdminController@editUser');

Route::post('changeRoleType/{id}', 'AdminController@changeRoleType')->name('updateRole');

{!! Form::model($editRole,['route' => ['updateRole', $editRole->id],'method' => 'post']) !!}

注意$editRole变量是示例,通过编辑视图传递

希望这对你有用!!!

答案 1 :(得分:1)

id应该在请求对象中。假设您正在使用Request。

use Illuminate\Http\Request;
public function changeRoleType(Request $request, $id)
    {
        dd($request->id);
    }

https://laravel.com/docs/5.4/requests

答案 2 :(得分:1)

你可以做两个的事情:

您需要在表单的URL中传递用户ID。

template <class T>
void define_vector(size_t size, const T& init_val=T())
{
  vector<T> sample;
  if constexpr(is_copy_assignable<T>::value) {
      sample.resize(size, init_val);
  } else {
      assert(init_val == T());
      sample.resize(size);
  }
}

路线部分后,您需要添加以下内容:

{!! Form::open(['url' => 'changeRoleType/{{ $user->id }}', 'method' => 'POST']) !!}

所以Controller中的方法必须是这样的:

Route::post('changeRoleType/{user}', 'AdminController@changeRoleType');

首先,您可以在表单中创建隐藏输入,这样您就可以在控制器中传递$ id。

public function changeRoleType($user)
{
     dd($user);
}

然后在你的方法中。

 {{ Form::hidden('id', '{{$user->id}}') }}

注意:您需要在控制器顶部指定请求

public function changeRoleType(Request $request)
{
     dd($request->id);
}

答案 3 :(得分:1)

您可以使用route方法并为此路线添加参数。

routes.phpweb.php

Route::get('/order/{id}', [
           'as' => 'order.show', 
           'uses' => 'OrderController@showOrderFromOrderhistory'
]);

然后在您的链接或表单中,您可以使用参数:

链接到此路线
route('order.show', ['id' => $order->id]) }}

所以在你的例子中它将是:

{!! Form::open(['url' => route('%route_name%', ['%param_name%' => $variable]), 'method' => 'POST']) !!}