laravel - 将多个列表传递给视图

时间:2014-02-12 15:46:42

标签: php laravel laravel-4 blade

我有一份联赛名单,我正在传递给这样的观点......

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

我想要做的是传递另一个列表,例如国家/地区,但我不确定如何这样做。

e.g。

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

我怎样才能追加$ country? 我已经看到将$ data创建为一个数组,但同样,并不完全确定如何设置它。

有人可以提出建议吗?

DS

5 个答案:

答案 0 :(得分:3)

所有这些答案都是正确的,但没有人给你最好,最简单,最易阅读的版本:

// 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(...))
  • 执行此操作

答案 1 :(得分:2)

非常简单,只需添加多个“with”元素:

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

答案 2 :(得分: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所说的相反,您可以从Array索引的名称访问View中的变量。 意味着您可以通过$ leagues / $国家/地区访问它们,例如多个语句

答案 3 :(得分: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'));

答案 4 :(得分:0)

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