通过我的第一个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}。有没有办法在没有它们的情况下传递这些变量?或者以不同的方式存储它们。我可能会以更难的方式做到这一点。再次感谢您的时间和帮助。
答案 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'));