将参数从表单传递给Controller Laravel

时间:2016-10-03 18:28:00

标签: php laravel laravel-5

我正在尝试了解如何通过Laravel中的URL传递参数。

在我的情况下,我有一个主页(/)(HomeController @ get__home和view home),它包含来自数据库表的n个数据。 用户可以选择其中一个并转到下一页。

第二个网页是/ {param from first page} / login

第一页的字段{param}来自(当然)第一页,取决于选择的是哪条记录。

我读过this,但我想我已经不在了。

我找不到将参数传递给网址的方法。

在我的Route.php中:

Route::get("/", "HomeController@home");
Route::get("/{position}/login", "LoginController@login");

并在控制器中:

class HomeController extends Controller
{
    public function home(){

      $foos = Foo::all();

      return view('home')->with('foos',$foos);
    }
}

class LoginController extends Controller
{
  public function login(Foo $foo)
  {
    return view('login');
  }
}

和home.blade.php

<form class="" action="{{action(LoginController@login)}}" method="post">
...

1 个答案:

答案 0 :(得分:6)

由于您使用带有post方法的表单,因此您应该定义如下路径:

Route::post("/login", "LoginController@login");

然后在表单操作中调用它:

<form action="{{action('LoginController@login')}}" method="post">
    <select name="position">
        <option value="1">Position 1</option>
        <option value="2">Position 2</option>
    </select>
...

然后,在控制器中,您可以获得请求中的选项:

class LoginController extends Controller
{
    public function login(Request $request)
    {
        $position = $request->position;
        return view('login');
    }
}