Prezentácia

Požiadavky

• PHP 7.3 (alebo vyššie)

• Composer

• MySQL databáza

• Vývojové prostredie (Visual Studio Code)

Vytvorenie projektu

Projekt vytvoríme nasledujúcim príkazom:
composer create-project --prefer-dist laravel/laravel nazovProjektu
Projekt sa vytvorí v adresári kde sa akutálne nachádzame.

Vytvoríme databázu:
DROP DATABASE IF EXISTS laravel
CREATE DATABASE IF NOT EXISTS laravel

Nastavenie databázy

otvoríme súbor .env a nastavime potrebné parametre databázy, uvádzam ako príklad moje nastavenie databázy:


DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=databazy

Prvé spustenie

V terminály pôjdeme do nášho projektu
cd nazovProjektu
a spustíme ho príkazom:
php artisan serve
na adrese localhost:8000 by sme mali vidieť úvodnu stránku Laravelu

AHOJ!

v súbore routes/web.php doplnime:
Route::get('/ahoj', function () { echo "ahoj"; });
spustíme localhost:8000/ahoj

Blades

v súbore resources/views/welcome.blade.php doplnime dátum:
{{date ('Y-m-d H:i:s')}}
if podmienka
@if(podmienka) yes @else no @endif
cyklus:
@foreach(['one','two','three'] as $number)
{{$number}}
@endforeach

spustíme localhost:8000

Controlers

Do konzoly
php artisan make:controller HomeController
do vytvoreneho suboru v app/Http/Controllers/HomeController.php
public function index() { return view('welcome'); }
v routes/web.php :
Route::get('/', [HomeController::class, 'index']);

Models

Do konzoly
php artisan make:model Message
Do konzoly
php artisan make:migration create_messages_table
v database/migration/*timestamp* :


                    use Illuminate\Database\Migrations\Migration;
                    use Illuminate\Database\Schema\Blueprint;
                    use Illuminate\Support\Facades\Schema;
                        
                    class CreateMessagesTable extends Migration
                    {
                        /**
                            * Run the migrations.
                            *
                            * @return void
                        */
                        public function up()
                        {
                        Schema::create('messages', function (Blueprint $table) {
                                $table->id();
                                $table->string('title');
                                $table->string('content');
                                $table->timestamps();
                            });
                        }
                        
                            /**
                             * Reverse the migrations.
                             *
                             * @return void
                             */
                            public function down()
                            {
                                Schema::dropIfExists('messages');
                            }
                        }

na vytvorenie struktury databazy napisem do konzoly:
php artisan migrate
v resources/views/ vytvorime novy priecinok master.blade.php vygenerujem hlavicku html a dopisem tam
@yield('content') - do tela
@yield('title') - do title
v tej istej strukture (resources/views/) vytvorim home.blade.php dopisem tam:
                    @extends('master') 

                    @section('title','Homepage')
        
                    @section('content')
        
                        h1 Content! /h1
                    @endsection

HomeController

v súbore app/Http/Controllers/HomeController doplnime:

                                namespace App\Http\Controllers;

                                use Illuminate\Http\Request;
                                use App\Models\Message;
                                
                                class HomeController extends Controller
                                {
                                    public function index()
                                    {
                                
                                        $messages = Message::all();
                                
                                        return view('home');
                                    }
                                }
                        

Uloha 1

Do kódu v app/Http/Controllers/HomeController doplnte foreach cyklus ktory vypise vsetky spravy

Vypisanie poloziek databazy

V resources/views/home.blade.php

                            @extends('master') 


                            @section('title','Homepage')
                            
                            @section('content')
                            
                                 Recent messages:
                            
                               ul
                                   @foreach($messages as $message)
                                       li
                                          strong {{$message->title}} /strong
                                        br
                                                   {{$message->content}}
                                       /li
                                   @endforeach
                               /ul
                            
                            
                            @endsection
                    

Uloha 2

Do kódu v resources/views/home.blade.php pridajte aj cas, kedy bol pridany zaznam

Pridavanie zaznamov

Do kódu v resources/views/home.blade.php doplnime formular na posielanie
Aby sme mohli komunikovat s databazou doplnime metodu post do resources/web.php
use App\Http\Controllers\MessageController;
Route::post('/create', [MessageController::class, 'create']);

nasledne si vytvorime MessageControler: php artisan make:controller MessageController
a dopnime do app/Http/Controllers/MessageController kod:

                                namespace App\Http\Controllers;

                                use Illuminate\Http\Request;
                                use App\Models\Message;
                                
                                class MessageController extends Controller
                                {
                                    public function create(Request $request){
                                
                                        $message = new Message();
                                        $message->title = $request->title;
                                        $message->content = $request->content;
                                
                                        $message->save();
                                
                                        return redirect('/');
                                    }
                                }
                         

do routes/web.php pridame:
Route::get('/message/{id}',[MessageController::class, 'view'])
do app/Http/Controllers/MessageController pridame:
                            public function view($id){
                                 echo $id;
                                }
                     

zmenime funkciu view v app/Http/Controllers/MessageController:
                            public function view($id){
                                $message = Message::findOrFail($id);
                        
                                return view('message',['message' => $message]);
                            }
                     

vytvorime novy blade subor nakopirovanim resources/views/home.blade.php a pomenujeme ho message.blade.php jeho obsah bude:
                            @extends('master') 

                            @section('title',$message->title)
                            
                            @section('content')
                            
                            h3{{ $message -> title}}/h3
                            p{{ $message -> content}}/p
                            
                            @endsection
                            
                    

doplnime do resources/views/home.blade.php prepojenie.

Uloha 3

Do kódu v resources/views/home.blade.php pridajte prepojenie klikom na nadpis

Zdroje

https://www.tutorialspoint.com/laravel/index.htm
https://laravel.com/
https://laracasts.com/series/laravel-5-fundamentals