как показать фотографии на моей странице просмотра .blade из mysql базы данных c для идентификатора - PullRequest
0 голосов
/ 31 марта 2020

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

Например, как ebay показывает одну фотографию для объявления, но когда вы нажимаете на объявление, оно показывает несколько фотографий.

Я использовал 'strtok', чтобы показать одну фотографию на моей главной странице и странице категории, но теперь я не знаю, как настроить страницу просмотра, чтобы показать все фотографии для этого элемента.

вот как я сохраняю изображения при распечатке

public function postHobbies(Request $request)
{
  $this->validate($request, [
    'photos' => 'required',
    'Photos.*' => 'image|mimes:jpg, png, jpeg, gif, aae, heif, svg|max:2048'
  ]);

  $ads = new Listings;
  $images = $request->file('photos');
  $count = 0;
  if ($request->file('photos')) {
    foreach ($images as $item) {
      if ($count < 6) {
        $var = date_create();
        $date = date_format($var, 'Ymd');
        $imageName = $date . '_' . $item->getClientOriginalName();
        $item->move(public_path() . '/uploads/', $imageName);
        $url = URL::to("/") . '/uploads/' . $imageName;
        $arr[] = $url;
        $count++;
      }
    }
    $image = implode(",", $arr);
    $ads->photos = $image;
    $ads->save();
    return redirect('/')->with('info', 'Listing published successfully');
  }
}

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

public function view(Request $request, $id)
{
  $ads = DB::table('listings')
    ->select('listings.id', 'photos', 'description', 'year', 'make', 'model', 'price', 'city', 'state', 'email')
    ->where(['id' => $id])
    ->get();
  $output = '';
  if ($ads->count() > 0) {
    return view('users.posted.postedads', ['id' => $id, 'ads' => $ads]);
  }
}

И, наконец, вот как я сейчас передаю его, просто показываю мне одну фотографию, так как я все еще использую 'strtok', чтобы убедиться, что она работает. Поэтому я предполагаю, что мне нужно изменить эту функцию, я просто не знаю, что использовать и как ее использовать.

<div class="row">
@if(count($ads)>0)
  @foreach($ads as $row)
  <div class="col-md-12">
    <div class="productCard">
      <img style="width:100%; height:100%;" src="<?php echo strtok($row->photos, ',')?>" />
    </div>
  </div>
  @endforeach
@else
@endif

1 Ответ

0 голосов
/ 31 марта 2020

Прежде всего, вам нужно сохранить много изображений, сейчас вы сохраняете только одно изображение.

Рекомендуется сделать другую модель для изображений (например, Image) и сделать отношения один ко многим или многие ко многим между Listings (лучше использовать единственное имя для моделей).

Затем в вашем методе view вам нужно Извлеките связанные модели с помощью Listings->with('images'), и в вашем файле просмотра вам нужно добавить еще один foreach l oop, где вы хотите отображать изображения.

Код просмотра будет выглядеть примерно так:

<div class="row">
@if(count($ads)>0)
  @foreach($ads as $row)
  <div class="col-md-12">
    <div class="productCard">
      @foreach($row->images as $image)
      <img style="width:100%; height:100%;" src="{{ $image->url }}" />
      @endforeach
    </div>
  </div>
  @endforeach
@else
@endif

Примечание Я использовал {{ }} Laravel Директиву Blade вместо <?php echo, вы тоже должны

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