В Laravel у меня возникают трудности с пониманием синтаксиса, необходимого для итерации массива в моем блейде с использованием @foreach - PullRequest
0 голосов
/ 07 апреля 2020

У меня проблемы с чтением следующего массива "$ photos", который я передал с контроллера на блейд.

  0 => array:2 [▼
    "destinationPath" => "images/"
    "filename" => "15-1-tue-apr-7-2020-130-am-34824.jpg"
  ]
  1 => array:1 [▼
    0 => array:2 [▼
      "destinationPath" => "images/"
      "filename" => "15-1-tue-apr-7-2020-130-am-89914.jpg"
    ]
  ]
  2 => array:1 [▼
    0 => array:2 [▼
      "destinationPath" => "images/"
      "filename" => "15-1-tue-apr-7-2020-130-am-30958.jpg"
    ]
  ]
  3 => array:1 [▼
    0 => array:2 [▼
      "destinationPath" => "images/"
      "filename" => "15-1-tue-apr-7-2020-130-am-68870.jpg"
    ]
  ]
]

Если я вызываю фотографии непосредственно на блейде как следует, это работает, чтобы подтянуть изображение:

  <img class="img-fluid options-item" src="{{$path}}/{{ $photos[0]['destinationPath'] }}{{ $photos[0]['filename'] }}" alt="">

, но когда я пытаюсь l oop через массив

@for ($i = 0; $i < count($photos); $i++)
  <img class="img-fluid options-item" src="{{$path}}/{{ $photos[$i]['destinationPath'] }}{{ $photos[$i]['filename'] }}" alt="">
@endfor

Я получаю следующую ошибку:

Facade\Ignition\Exceptions\ViewException
Undefined index: destinationPath (View: C:\Apache24\htdocs\collection\proof\resources\views\pages\gallery.blade.php)

Я также пробовал следующее с отрицательным результатом:

@foreach ($photos as $photo)
   <img class="img-fluid options-item" src="{{$path}}/{{ $photo['destinationPath'] }}{{ $photo['filename'] }}" alt="">
@endforeach

результат :

Facade\Ignition\Exceptions\ViewException
Undefined index: destinationPath (View: C:\Apache24\htdocs\collection\proof\resources\views\pages\gallery.blade.php)

Любое руководство по правильному синтаксису будет высоко ценится.

контроллер:

class GalleryController extends Controller
{

    function index($coin_id)
    {
        $coin = Coin::select('photos', 'mint', 'year', 'series', 'rating')
            ->where('id', '=', $coin_id)
            ->where('user_email', '=', auth()->user()->email)
            ->first();

        $photos=$coin->photos;
        $path=url('/');

        dd($photos);

        return view ('pages.gallery', compact('coin', 'photos', 'path'));

    }
}

1 Ответ

0 голосов
/ 07 апреля 2020

Здесь сначала вы используете @for, но в итоге получаете @endforeach. какой из них вы хотите использовать? for l oop или foreach l oop?

@for ($i = 0; $i < count($photos); $i++)
  <img class="img-fluid options-item" src="{{$path}}/{{ $photos[$i]['destinationPath'] }}{{ $photos[$i]['filename'] }}" alt="">
@endforeach

, если вы хотите использовать foreach

@foreach ($photos as $photo)
 <img class="img-fluid options-item" src="{{$path}}/{{ $photo->destinationPath }}{{ $photo->filename }}" alt="">
@endforeach

Причина ошибки заключается в том, что $photo['destinationPath'] - это синтаксис массива. $photo на самом деле object. поэтому вам нужно использовать -> для доступа к его свойству.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...