php 对PhotoAlbums的照片分页

czfnxgou  于 2023-05-05  发布在  PHP
关注(0)|答案(1)|浏览(102)

我在Laravel 10中创建了一个PhotosAlbum程序。最初的概念是在youtube上很长一段时间由Traversy媒体创建。我想给这些照片标页码。我已经给相册标好页码了。
以下是相应的文件:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Album;

class AlbumsController extends Controller
{
public function index(){
  $albums = Album::with('photos')->orderby('name','asc')->paginate(8);
  return view('albums.index')->with('albums', $albums);
}

public function create(){
  return view('albums.create');
}

public function store(Request $request){
   $this->validate($request, [
   'name' => 'required',  //|unique:albums|regex:/(^[A-Z]\w)/',
   'cover_image' => 'required|dimensions:max_width=140,max_height=210',
 ]);

 $filenamewithExt = $request->file('cover_image')->getClientOriginalName();
 $filename = pathinfo($filenamewithExt, PATHINFO_FILENAME);
 $extension = $request->file('cover_image')->getClientOriginalExtension();
 $filetostore = $filename.'_'.time().'.'.$extension;
 $path = $request->file('cover_image')->storeAs('public/album_covers', $filetostore);

      //Create album
       $album = new Album;
       $album->name = $request->input('name');
       $album->cover_image = $filetostore;

       $album->save();

       return redirect('/albums/');
  }

  public function show($id){
     $album = Album::with('Photos')->find($id);
     return view('albums.show')->with('album', $album);
   }
 }

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Album extends Model
{
//use HasFactory;
protected $fillable = array('name','cover_image');

//create relationship
public function photos(){
return $this->hasMany('App\Models\Photo');
  }
}

PhotoController和型号:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Photo;
use Illuminate\Support\Facades\Storage;

class PhotosController extends Controller

{
 public function create($album_id){
    return view('photos.create')->with('album_id', $album_id);
 }


 public function store(Request $request){
   $this->validate($request, [
   'set'  =>  ['required', 'unique:photos','regex:/(^[Set-]\d+)/'],
   'photo' => ['required', 'dimensions:max_width=110,max_height=165']
 ]);

   $filenamewithExt = $request->file('photo')->getClientOriginalName();
   $filename = pathinfo($filenamewithExt, PATHINFO_FILENAME);
   $extension = $request->file('photo')->getClientOriginalExtension();
   $filetostore = $filename.'_'.time().'.'.$extension;
   $path = $request->file('photo')->storeAs('public/photos/'.$request->input('album_id'), $filetostore);
   
 

     //upload photo
     $photo = new Photo;
     $photo->album_id = $request->input('album_id');
     $photo->set = $request->input('set');
     $photo->description = $request->input('description');
     $photo->photo = $filetostore;

     
     $photo->save();

      //$request->session()->flash('status', 'Photo Uploaded');          
      return redirect('/albums/'.$request->input('album_id'));
   }

 public function show($id){
   $photo = Photo::find($id);
   return view('photos.show')->with('photo', $photo);
}

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Photo extends Model
{
//use HasFactory;
protected $fillable = array('photo','set','description','album_id');

  public function album(){
     return $this->belongsTo('App\Models\Album');
  }
    
 }

显示照片的blade文件位于/albums/show. blade. php
这里是显示.blade php

@extends('layouts.app')

@section('content')
<div class="container lg-10">
<h2>{{$album->name}}</h2>
<a class="btn btn-secondary sm" href="/albums">Back</a>
 <a class="btn btn-primary sm" href="/photos/create/{{$album->id}}">Upload Image</a>

 <hr>
 @if(count($album->photos)>0)
    <div class="row pt-2 ">
     @foreach($album->photos as $photo)

<div class="card mb-4 border-primary ml-3" style="max-width: 320px;">
    <div class="row g-0">
   <div class="col-md-4 pt-2 pb-2 pr-3">
     <img class="rounded mx-auto" src="../storage/photos/{{$photo->album_id}}/{{$photo->photo}}" alt="">
   </div>  
 
   <div class="col-md-8">
     <div class="card-body border-primary">
       <h5 class="card-title ml-2">{{$photo->set}}</h5>
           <small>Size: {{$photo->size}}</small><br>
              <a href="../photos/{{$photo->id}}/edit">Edit</a> 
              <a href="../photos/{{$photo->id}}/show">Delete</a > 
            </div>
          </div>
         </div>
         @endforeach
      </div>
    </div>
    @else
   <p>No Photos to Display</p>
 @endif

@endsection

任何想法或帮助将不胜感激,谢谢

cbjzeqam

cbjzeqam1#

在您的代码中:

public function index(){
  $albums = Album::with('photos')->orderby('name','asc')->paginate(8);
  return view('albums.index')->with('albums', $albums);
}

你是否使用分页,但在你的刀片不使用:

......
 </div>
         </div>
         @endforeach
      </div>

 {{ $albums->links() }}

相关问题