【问题标题】:How to pass a variable from one controller to a another with Laravel如何使用 Laravel 将变量从一个控制器传递到另一个控制器
【发布时间】:2018-11-26 15:42:51
【问题描述】:

首先,用户从下拉列表中选择一个值,该值将所选值存储在一个名为$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 和 web 开发的新手。

【问题讨论】:

    标签: php laravel controller


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,它成功了。好东西。当它允许我时,我会接受这个答案
    • 很高兴我能帮上忙。考虑将此标记为您问题的答案,以便其他用户也可以找到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多