Skip to main content

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 &raquo;</a>
</article>
@endforeach

Eloquent

Create Models

php artisan make:model Post
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';
}