2014-02-12 32 views
0

我有我傳遞給這樣的觀點聯賽的列表...laravel - 傳遞多個列表視圖

我想這樣做的是通過另一個列表中,例如國家,但我不確定我會如何去做。

例如

$leagues = League::lists('name', 'id'); 
$countries = Country::lists('name', 'id'); 
return View::make('gameworlds.create')->with('leagues', $leagues ... ... ...); 

我該如何追加$國家呢? 我已經看到創建$數據作爲一個數組,但再次,不完全確定如何設置。

有人可以提醒嗎?

DS

回答

1

很簡單,只需要添加多個 「與」 要素:

$leagues = League::lists('name', 'id'); 
$countries = Country::lists('name', 'id'); 
return View::make('gameworlds.create')->with('leagues', $leagues)->with('countries', $countries); 
+0

我有這個標記爲答案,因爲它是使大多數直觀的感覺來了我一個......「只需添加一個與您要添加的每個東西」 - 感謝所有 - 我會充分調查其他答案以瞭解我的選擇。非常感謝大家。 – dstewart101

1

你可以像下面這樣做

$leagues = League::lists('name', 'id'); 
$countries = Country::lists('name', 'id'); 
$data['leagues'] = $leagues; 
$data['countries'] = $countries; 
return View::make('gameworlds.create')->with($data); 

相反的是trizz說,你可以訪問View中的變量來自Array索引的名稱。 意味着你可以通過$聯賽/ $國家語句

+0

我的不好。我已經改變了我的答案:) – trizz

+0

我會評論你的答案,而不是作出類似的迴應,但它需要50聲望評論 –

0
return View::make('gameworlds.create')->with(array('leagues'=>$leagues,'countries'=> $countries)); 
2

所有這些問題的答案是正確的,但沒有一個人給你的最好的,最簡單,最可讀的版本訪問他們喜歡與多個:

// get data 
$leagues = League::lists('name', 'id'); 
$countries = Country::lists('name', 'id'); 

// render view and pass data in 
return View::make('gameworlds.create', compact('leagues', 'countries')); 

需要考慮的事情:

  • PHP的compact功能是非常有用的語法糖
  • 我更喜歡將數據傳遞給我的看法作爲第二個參數來View::make(),但你仍然可以做到這一點與->with(compact(...))
+0

我喜歡這個可讀性和清潔。 – trizz

+0

我會更加關注這個緊湊的功能 - 我沒有把它標記爲答案,因爲在這個場合我使用了不同的解決方案。非常感謝您的幫助 – dstewart101

1

你可以試試這個

return View::make('gameworlds.create') 
      ->with('leagues', $leagues) 
      ->with('countries', $countries); // more withs could be added 

或者,這也

$array = array('leagues' => $leagues, 'countries' => $countries); 
return View::make('gameworlds.create', $array); 

或使用快捷鍵array語法

return View::make('gameworlds.create', ['leagues' => $leagues, 'countries' => $countries]); 

或者使用compact

$leagues = League::lists('name', 'id'); 
$countries = Country::lists('name', 'id'); 
return View::make('gameworlds.create', compact('leagues', 'countries'));