У меня есть этот сайт, и одна из его страниц создает простой список людей из базы данных. Мне нужно добавить одного конкретного человека к переменной, к которой я могу получить доступ.
Как изменить return $view->with('persons', $persons);
line, чтобы передать переменную $ ms в представление?
function view($view) { $ms = Person::where('name', 'Foo Bar'); $persons = Person::order_by('list_order', 'ASC')->get(); return $view->with('persons', $persons); }
Просто передайте его как массив:
$data = array( 'name' => 'Raphael', 'age' => 18, 'email' => 'r.mobis@rmobis.com' ); return View::make('user')->with($data);
Или цепи их, как @ Антонио упомянул.
Вот как вы это делаете:
function view($view) { $ms = Person::where('name', '=', 'Foo Bar')->first(); $persons = Person::order_by('list_order', 'ASC')->get(); return $view->with('persons', $persons)->with('ms', $ms); }
Вы также можете использовать compact () :
function view($view) { $ms = Person::where('name', '=', 'Foo Bar')->first(); $persons = Person::order_by('list_order', 'ASC')->get(); return $view->with(compact('persons', 'ms')); }
Или сделайте это в одной строке:
function view($view) { return $view ->with('ms', Person::where('name', '=', 'Foo Bar')->first()) ->with('persons', Person::order_by('list_order', 'ASC')->get()); }
Или даже отправить его как массив:
function view($view) { $ms = Person::where('name', '=', 'Foo Bar')->first(); $persons = Person::order_by('list_order', 'ASC')->get(); return $view->with('data', ['ms' => $ms, 'persons' => $persons])); }
Но в этом случае вам придется обращаться к ним следующим образом:
{{ $data['ms'] }}
Использовать компактный
function view($view) { $ms = Person::where('name', '=', 'Foo Bar')->first(); $persons = Person::order_by('list_order', 'ASC')->get(); return View::make('users', compact('ms','persons')); }
Передача нескольких переменных в представление Laravel
//Passing variable to view using compact method $var1=value1; $var2=value2; $var3=value3; return view('viewName', compact('var1','var2','var3')); //Passing variable to view using with Method return view('viewName')->with(['var1'=>value1,'var2'=>value2,'var3'=>'value3']); //Passing variable to view using Associative Array return view('viewName', ['var1'=>value1,'var2'=>value2,'var3'=>value3]);
Читайте здесь о передаче данных в представления в Laravel
Применилась аналогичная проблема, но если вы не хотите возвращать представление в файле вида, вы можете сделать это:
return $view->with(compact('myVar1', 'myVar2', ..... , 'myLastVar'));