Laravel将值从控制器传递到路由,然后传递给控制器​​

时间:2016-01-11 16:57:54

标签: php laravel routes

通过我的第一个Laravel项目。感谢您的帮助。

我有一个SearchController,它说明查询的数量是否超过1才能转到提供的视图。

return view('pages/multi-providers')->with('data',$data)->with('city',$city)->with('state',$state)->with('provider',$provider)->with('zipcode',$zipcode);

我能够传递以这种简单方式创建的变量。但接着是路线     www.domain.com/search/?q=01035

所以我尝试将返回重定向到命名路由

return redirect()->route('multi-providers',[$zipcode])->with('data',$data)-  >with('city',$city)->with('state',$state)->with('provider',$provider)->with('zipcode',$zipcode);

然后我在routes.php中的路线是

Route::get('multi-providers/{zipcode}', ['uses' => 'PagesController@multiProviders','as' => 'multi-providers'])->with('data',$data)->with('city',$city)->with('state',$state)->with('provider',$provider)->with('zipcode',$zipcode);

然后在我的PageController @ multiProviders中我有

public function multiProviders($zipcode)
    {
        $data['zipcode'] = $zipcode;
        return view('pages/multi-providers')->with('data',$data)->with('city',$city)->with('state',$state)->with('provider',$provider)->with('zipcode',$zipcode);

}

该路线开始工作,并显示为

www.domain.com/multi-provider/{zipcode}(acutally shows zip like 92804)

但是后来我得到一个错误,$ city和$ state变量没有定义。所以我尝试将它们像公共函数中的zipcode一样传递,但之后它说它缺少一个参数。我猜测因为我在网址中没有额外的参数,例如网址中的{city}或{state}。有没有办法在没有它们的情况下传递这些变量?或者以不同的方式存储它们。我可能会以更难的方式做到这一点。再次感谢您的时间和帮助。

2 个答案:

答案 0 :(得分:0)

您是否尝试使用" compact"?

在您的公共控制器中这样:

return view('pages.multi-providers', compact('zipcode', 'data', etc. etc.));

这使它更具可读性并且应该正确传递这些变量。

答案 1 :(得分:0)

Route::get('multi-providers/{zipcode}/{city}/{state}/{provider}/{data}', ['uses' => 'PagesController@multiProviders','as' => 'multi-providers']);

然后你从这样的控制器中获取这些变量

public function multiProviders($zipcode, $city, $state, $provider, $data)
{

    return view('pages/multi-providers', compact('zipcode', 'city', 'state', 'provider', 'data'))}

要使用这些参数转到此路线,您应该这样做

return redirect()->route('multi-providers',compact('zipcode', 'city', 'state', 'provider', 'data'));