laravel compact () и -> с ()

У меня есть часть кода, и я пытаюсь выяснить, почему один вариант работает, а другой – нет.

return View::make('gameworlds.mygame', compact('fixtures'), compact('teams'))->with('selections', $selections); 

Это позволяет мне генерировать представление массивов для приборов, команд и выборов, как и ожидалось.

Однако,

 return View::make('gameworlds.mygame', compact('fixtures'), compact('teams'), compact('selections')); 

не позволяет правильно сформировать представление. Я все еще могу отследить массивы, и я получаю ожидаемые результаты, но представление не отображается после того, как оно поступит в раздел выбора.

Это нормально, потому что я работаю с синтаксисом ->with() но просто нечетным.

Благодарю. DS

Функция View::make принимает 3 аргумента, которые в соответствии с документацией:

 public View make(string $view, array $data = array(), array $mergeData = array()) 

В вашем случае compact('selections') является 4-м аргументом. Это не переходит к представлению, и laravel выдает исключение.

С другой стороны, вы можете использовать with() столько раз, сколько хотите . Таким образом, это будет работать:

 return View::make('gameworlds.mygame') ->with(compact('fixtures')) ->with(compact('teams')) ->with(compact('selections')); 

Я просто хотел прыгнуть сюда и исправить (предложить альтернативу) предыдущему ответу ….

Фактически вы можете использовать компактный формат, но, например, очень аккуратно …

 return View::make('gameworlds.mygame', compact(array('fixtures', 'teams', 'selections'))); 

Или если вы используете PHP> 5.4

 return View::make('gameworlds.mygame', compact(['fixtures', 'teams', 'selections'])); 

Это намного опережает и по-прежнему позволяет читать при просмотре того, что делает приложение;)

Я смог использовать

 return View::make('myviewfolder.myview', compact('view1','view2','view3')); 

Я не знаю, если это потому, что я использую PHP 5.5, он отлично работает 🙂

 Route::get('/', function () { return view('greeting', ['name' => 'James']); }); <html> <body> <h1>Hello, {{ $name }}</h1> </body> </html> 

или

 public function index($id) { $category = Category::find($id); $topics = $category->getTopicPaginator(); $message = Message::find(1); // here I would just use "->with([$category, $topics, $message])" return View::make('category.index')->with(compact('category', 'topics', 'message')); } 

лучший способ для меня:

  $data=[ 'var1'=>'somthing', 'var1'=>'somthing', 'var1'=>'somthing', ]; return View::make('view',$data);