model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Tour extends Model
{
use HasFactory;
protected $fillable = [
'title',
'harga',
'waktu',
'jumlahorang',
'namalokasi',
'deskripsi',
'deskripsi1',
'tujuan',
'negara',
'fasilitas',
'faq',
'gallery',
'image',
'policy',
'tourcatagori_id', // Corrected the attribute name
];
public function tourcatagori()
{
return $this->belongsTo(Tourcatagori::class, 'tourcatagori_id'); // Corrected the model name and attribute
}
}
controller :
<?php
namespace App\Http\Controllers;
use App\Models\Tour;
use App\Models\tourcatagori;
use Illuminate\Http\Request;
class TourController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
return view('tour.index',[
'tour' => Tour::paginate(10),
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('tour.create',[
'tour' => new Tour(),
'tourcatagori' => tourcatagori::all(),
]);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$this->validate($request, [
'title' => 'required|string',
'harga' => 'required|numeric',
'waktu' => 'required', // Tambahkan aturan validasi 'date' untuk waktu
'jumlahorang' => 'required|integer',
'namalokasi' => 'required|string',
'deskripsi' => 'required|string',
'deskripsi1' => 'required|string',
'tujuan' => 'required|string',
'negara' => 'required|string',
'fasilitas' => 'required|string',
'faq' => 'required|string',
'gallery' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048',
'image' => 'required|image|mimes:jpeg,png,jpg,gif|max:2048',
'policy' => 'required|string',
'tourcatagoris_id' => 'required|exists:tourcatagoris,id', // Tambahkan aturan validasi 'exists'
]);
$galleryPath = $request->file('gallery')->store('images/tour');
$imagePath = $request->file('image')->store('images/tour');
$tour = Tour::create([
'title' => $request->title,
'harga' => $request->harga,
'waktu' => $request->waktu,
'jumlahorang' => $request->jumlahorang,
'namalokasi' => $request->namalokasi,
'deskripsi' => $request->deskripsi,
'deskripsi1' => $request->deskripsi1,
'tujuan' => $request->tujuan,
'negara' => $request->negara,
'fasilitas' => $request->fasilitas,
'faq' => $request->faq,
'gallery' => $galleryPath,
'image' => $imagePath,
'policy' => $request->policy,
'tourcatagoris_id' => $request->tourcatagoris_id,
]);
return redirect(route('tour.index'));
}
/**
* Display the specified resource.
*/
public function show(Tour $tour)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Tour $tour)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Tour $tour)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Tour $tour)
{
//
}
}
create blade :
<div class="row">
<!-- Basic -->
<div class="col-md-6">
<div class="card mb-4">
<div class="card-body demo-vertical-spacing demo-only-element">
<div class="input-group">
<span class="input-group-text" id="basic-addon11">Title</span>
<input type="text" class="form-control" id="title" name="title"
placeholder="Explore the World" value="{{ old('title') ?? $tour->title }}" required />
@error('title')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<span class="input-group-text">$</span>
<input type="number" class="form-control" id="harga" name="harga" placeholder="Amount"
aria-label="Amount (to the nearest dollar)" />
<span class="input-group-text">.00</span>
@error('harga')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<span class="input-group-text" id="basic-addon11">Time</span>
<input type="text" class="form-control" id="waktu" name="waktu"
placeholder="Explore the World" value="{{ old('waktu') ?? $tour->waktu }}" required />
@error('waktu')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<span class="input-group-text" id="basic-addon11">People</span>
<input type="text" class="form-control" id="jumlahorang " name="jumlahorang "
placeholder="Explore the World" value="{{ old('title') ?? $tour->jumlahorang }}" required />
@error('jumlahorang ')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<span class="input-group-text" id="basic-addon11">Location </span>
<input type="text" class="form-control" id="namalokasi" name="namalokasi"
placeholder="Explore the World" value="{{ old('namalokasi') ?? $tour->namalokasi }}" required />
@error('namalokasi')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<span class="input-group-text" id="basic-addon11">Destination </span>
<input type="text" class="form-control" id="tujuan" name="tujuan"
placeholder="Explore the World" value="{{ old('tujuan') ?? $tour->tujuan }}" required />
@error('tujuan')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<span class="input-group-text" id="basic-addon11">negara</span>
<input type="text" class="form-control" id="negara" name="negara"
placeholder="Explore the World" value="{{ old('negara') ?? $tour->negara }}" required />
@error('negara')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<span class="input-group-text">deskripsi</span>
<textarea class="form-control" id="deskripsi" name="deskripsi" rows="3"
value="{{ old('deskripsi') ?? $tour->deskripsi }}" required></textarea>
</div>
</div>
</div>
</div>
{{-- bagian ke dua --}}
<div class="col-md-6">
<div class="card mb-4">
<div class="card-body demo-vertical-spacing demo-only-element">
<div class="input-group">
<label class="input-group-text" for="basic-default-upload-file">gallery</label>
<input type="file" class="form-control" id="gallery" name="gallery" required />
@error('gallery')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<label class="input-group-text" for="basic-default-upload-file">image</label>
<input type="file" class="form-control" id="image" name="image" required />
@error('image')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<span class="input-group-text">deskripsi</span>
<textarea class="form-control" id="deskripsi" name="deskripsi1" rows="3"
value="{{ old('deskripsi1') ?? $tour->deskripsi1 }}" required></textarea>
</div>
<div class="input-group">
<span class="input-group-text" id="basic-addon11">faq</span>
<input type="text" class="form-control" id="faq" name="faq"
placeholder="Explore the World" value="{{ old('faq') ?? $tour->faq }}" required />
@error('faq')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<span class="input-group-text" id="basic-addon11">policy</span>
<input type="text" class="form-control" id="policy" name="policy"
placeholder="Explore the World" value="{{ old('policy') ?? $tour->policy }}" required />
@error('policy')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<span class="input-group-text" id="basic-addon11">fasilitas</span>
<input type="text" class="form-control" id="fasilitas" name="fasilitas"
placeholder="Explore the World" value="{{ old('fasilitas') ?? $tour->fasilitas }}"
required />
@error('fasilitas')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="input-group">
<select class="form-control" name="tourcatagoris_id" required>
<option value="">Pilih Kategori</option>
@foreach ($tourcatagori as $result)
<option value="{{ $result->id }}">{{ $result->name }}</option>
@endforeach
</select>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</div>
</div>
</div>
<!-- /Browser Default -->
<!-- /Bootstrap Validation -->
</div>
</div>
{{-- <div class="container-xxl flex-grow-1 container-p-y">
<div class="row mb-4">
<!-- Browser Default -->
<div class="col-md mb-4 mb-md-0">
<div class="card">
<h5 class="card-header">Masukan Data tour</h5>
<div class="card-body">
<form class="browser-default-validation">
<div class="mb-3">
<label class="form-label" for="basic-default-name">Judul</label>
<input type="text" class="form-control" id="title" name="title"
placeholder="Explore the World" value="{{ old('title') ?? $tour->title }}" required />
@error('title')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label class="form-label" for="basic-default-name">Harga</label>
<input type="text" class="form-control" id="harga" name="harga"
placeholder="Find your perfect tour" value="{{ old('harga') ?? $tour->judul }}"
required />
@error('harga')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label class="form-label" for="basic-default-name">waktu</label>
<input type="text" class="form-control" id="waktu" name="waktu"
placeholder="Find your perfect tour" value="{{ old('waktu') ?? $tour->judul }}"
required />
@error('waktu')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label class="form-label" for="basic-default-upload-file">Upload Gambar tour</label>
<input type="file" class="form-control" id="image" name="image" required />
@error('image')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label class="form-label" for="basic-default-bio">Bio</label>
<textarea class="form-control" id="deskripsi" name="deskripsi" rows="3"
value="{{ old('deskripsi') ?? $tour->deskripsi }}" required></textarea>
@error('deskripsi')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label class="form-label" for="basic-default-name">Url</label>
<input type="url" class="form-control" id="url" name="url"
placeholder="https://example.com" value="{{ old('url') ?? $tour->url }}" required />
@error('url')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="mb-3">
<label class="form-label" for="basic-default-name">Youtube</label>
<input type="url" class="form-control" id="youtube" name="youtube"
placeholder="id_youtube" value="{{ old('youtube') ?? $tour->youtube }}" required />
@error('youtube')
<div class="text-red-500 mt-2">{{ $message }}</div>
@enderror
</div>
<div class="row">
<div class="col-12">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- /Browser Default -->
<!-- /Bootstrap Validation -->
</div>
</div> --}}