я не могу передать три массива в виде Laravel - PullRequest
0 голосов
/ 11 мая 2018

Я попытался передать три массива в представление в laravel но у меня есть эта проблема

Неопределенная переменная: demmande (представление: C: \ wamp \ www \ project \ resources \ views \ demmande \ demmandes.blade.php)

я меняю порядок массивов, я не могу передать третий массив вот моя функция в контроллере

public function ViewDemmandes(){
  $listdemmande=Demmande::all();
  $listvillee=Ville::all();
  $listcategorie=Categorie::all();

  $villes = array('villes' =>   $listvillee, );
  $demmande = array('demmande' => $listdemmande, );
  $categorie = array('categorie' => $listcategorie, );

  return view("demmande.demmandes",$villes,$categorie,$demmande);
}

Ответы [ 6 ]

0 голосов
/ 11 мая 2018

Простой пример

Просмотр контроллера в app/Http/Controllers/SampleController.php

 /**
 * @return View
 */
public function index()
{
    $movieList = [
        'Shawshank redemption',
        'Forrest Gump',
        'The Matrix',
        'Pirates of the Carribean',
        'Back to the future',
    ];

    return view('welcome', compact('movieList'));
}

и, например, просмотр последних просмотров фильмов в resources/views/welcome.blade.php

@section('content')
    <h1>Latest Movies</h1>
    <ul>
    @foreach($movieList as $movie)
        <li class="list-group-item"><h5>{{ $movie }}</h5></li>
    @endforeach
    </ul>
@endsection
0 голосов
/ 11 мая 2018

В соответствии с официальной документацией вы можете либо передать массив в качестве второго параметра, а не список всех параметров.

return view("demmande.demmandes", [
    'villes' => $villes,
    'categorie' => $categorie,
    'demande' => $demande
]);

или связать метод withчтобы добавить больше параметров (см. страницу Github ).

return view("demmande.demmandes")
    ->with('villes', $villes)
    ->with('categorie', $categorie)
    ->with('demande', $demande);
0 голосов
/ 11 мая 2018
public function ViewDemmandes(){
  $listdemmande=Demmande::all();
  $listvillee=Ville::all();
  $listcategorie=Categorie::all();

  $villes = array('villes' =>   $listvillee, );
  $demmande = array('demmande' => $listdemmande, );
  $categorie = array('categorie' => $listcategorie, );

  return view("demmande.demmandes",compact('villes','categorie','demmande');
0 голосов
/ 11 мая 2018

Вы можете использовать compact() метод.

Попробуйте эту строку, чтобы вернуть ваши данные.

return view("demmande.demmandes",compact('villes','categorie','demmande'));

Просто замените ваш код этим,

public function ViewDemmandes(){
  $listdemmande=Demmande::all();
  $listvillee=Ville::all();
  $listcategorie=Categorie::all();

  $villes = $listvillee;
  $demmande = $listdemmande;
  $categorie = $listcategorie;

  return view("demmande.demmandes",compact('villes','categorie','demmande'));
}

И вы можете получить эти переменные с помощью

@foreach ($demmande as $data)
    {{$data->property}} //your property to define
@endforeach

Надеюсь, это сработает.

0 голосов
/ 11 мая 2018

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

return view("demmande.demmandes",['villes'=>$villes, 'categorie'=>$categorie, 'demmande'=>$demmande]);
0 голосов
/ 11 мая 2018

Из прочтения документации Laravel Views Я думаю, что метод view() ожидает, что вы зададите параметры шаблона, используя один массив. Вы можете объединить свои три массива в один:

public function ViewDemmandes(){
  $listdemmande=Demmande::all();
  $listvillee=Ville::all();
  $listcategorie=Categorie::all();

  $data = array(
    'villes' => $listvillee,
    'demmande' => $listdemmande,
    'categorie' => $listcategorie, 
  );

  return view("demmande.demmandes", $data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...