Laravel
Instal Laravel
Installation Via Composer
composer create-project laravel/laravel name-app
Installation Via Laravel Instaler
composer global require laravel/installer
laravel new example-app
Next, run project:
php artisan serve
Blade Template Engine
Create Component
php artisan make:component Navbar
php artisan make:component Navbar --view
Next, memanggil component
<x-navbar></x-navbar>
Slot
navbar.blade.php
<nav>
<h1>{{ $slot }}</h1>
</nav>
home.blade.php
<x-navbar>Logo</x-navbar>
Inheritens
web.php
Route::get('/', function () {
return view('home', ["title" => "Home Page"]);
});
header.blade.php
<header>
<h1>{{ $slot }}</h1>
</header>
navbar.blade.php
<nav>
<x-header>{{ $title }}</x-header>
</nav>
home.blade.php
<x-navbar>
<x-slot:title>{{ $title }}</x-slot:title> // opsi 1
<x-slot name="title">{{ $title }}</x-slot> // opsi 2
</x-navbar>
Other
navlink.blade.php
@props(['active' => false])
@php
$linkClasses = $active ? 'bg-gray-900 text-white' : 'text-gray-300 hover:bg-gray-700 hover:text-white';
@endphp
<a
{{ $attributes->merge(['class' => "$linkClasses rounded-md px-3 py-2 text-sm font-medium capitalize"]) }}
aria-current="{{ $active ? 'page' : 'false' }}"
>
{{ $slot }}
</a>
navbar.blade.php
<x-navlink href="/" :active="request()->is('/')" class="capitalize"> home </x-navlink>
<x-navlink href="/" :active="request()->is('post*')" class="capitalize"> post </x-navlink>
Method
String
Limit
Str::limit("value", 100);
// output 👇
// lorem ipsum bla bla bla bla (100) ...........
Format Time
$post->created_at->diffForHumans() // 3 minutes ago
$post->created_at->format("j F Y") // 16 mei 2024
View Data
web.php
use App\Models\Post;
Route::get('/posts', function () {
return view('home', ["posts" => Post::all()]);
});
Lakukan ini jika ingin mencari data berdasarkan id atau slug 👇
web.php
Route::get('/post/{post:slug}', function (Post $post) {
return view('home', ["posts" => $post]);
});
posts.blade.php
@foreach ($posts as $post)
<article class="border border-slate-200/20 p-2 rounded-md shadow-sm">
<h2 class="tracking-tight text-2xl font-medium capitalize">{{ $post['title'] }}</h2>
<div class="text-sm text-gray-500 mb-4">
<a href="#">{{ $post['author'] }}</a> | {{ $post->created_at->diffForHumans() }}
</div>
<p>{{ Str::limit($post['content'], 100) }}</p>
<a href="/post/{{ $post['slug'] }}" class="text-blue-500 text-sm">Read More »</a>
</article>
@endforeach
Eloquent
Create Models
php artisan make:model Post
- Lihat Selangkapnya
note
Eloquent will assume the Post
model stores records in the Posts
table, while an AirTrafficController
model would store records in an air_traffic_controllers
table
Jika nama tablenya berbeda dengan nama modelnya, maka kita harus menambahkan nama tabelnya di dalam model
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Flight extends Model
{
protected $table = 'my_post';
protected $primaryKey = 'post_id';
}