如何使用Laravel将变量从一个控制器传递到另一个控制器

时间:2018-11-26 15:42:51

标签: php laravel controller

首先,用户从下拉列表中选择一个值,该值将所选值存储在位于$SetNumber中的名为ControllerOne的变量中。用户从下拉菜单中选择后,您会看到表单操作为/Update,该操作用于检索数据并将其重定向到ControllerTwo

<form method="POST" action="/Update">
    @csrf 
    <select name="Match" id="Match" onchange="this.form.submit()">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
    </select>
</form> 

ControllerOne包含一个empty变量,该变量定义了变量$SetNumberControllerOne

class ControllerOne extends Controller
{
    public function index()
    {
        $SetNumber = "";
    }


    public function update(Request $request)
    {
         $SetNumber = $request->Match;

         return redirect()->action('ControllerTwo@index', ['SetNumber' => $SetNumber]);
    }   
}



class ControllerTwo extends Controller
{
    public function index()
    {
        echo $SetNumber;

        return view('pages.viewpage')->with('SetNumber', $SetNumber);
    }
}

问题是,当我尝试在控制器中回显$SetNumber并将其返回到视图时,提示我此错误:

  

未定义的变量:SetNumber。

我该怎么做呢?

我是laravel和网络开发人员的新手。

1 个答案:

答案 0 :(得分:0)

使用重定向功能发送的参数将添加到生成的url的查询字符串中。因此,如果要在其他控制器功能中访问它们,则必须从请求对象中获取值。

class ControllerTwo extends Controller
{
    public function index()
    {
        $SetNumber = request()->get('SetNumber');
        return view('pages.spotifyApi')->with('SetNumber', $SetNumber);
    }
}