完成我的第一个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变量没有定义。所以我试着像公共函数中的邮政编码一样传递它们,但它说它缺少一个参数。我猜是因为我在路由中没有额外的参数,比如url中的{city}或{state}。有没有办法在URL中不包含这些变量的情况下传递这些变量?或者用一种不同的方式来储存它们。我可能会做得更难。再次感谢你的时间和帮助。
你试过用"compact"来做这件事吗?
像这样在你的公共控制器:
return view('pages.multi-providers', compact('zipcode', 'data', etc. etc.));
这使它更可读,并且应该正确地传递这些变量。
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'));