我在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
任何想法或帮助将不胜感激,谢谢
1条答案
按热度按时间cbjzeqam1#
在您的代码中:
你是否使用分页,但在你的刀片不使用: