new
tatarp authored
ed4bf27e
Name Last commit Last update
docker new
src new
.gitignore new
README.md new
docker-compose.yml new

Laravel Logo

Laravel template

Laravel je open-source PHP framework vytvořený Taylorem Otwellem za účelem vývoje webových aplikací založených na principu architektury model-view-controller (MVC). Výhody které Laravel nabízí, jsou různé knihovny, různé způsoby pro přístup k relačním databázím. Laravel má velkou komunitu.

Tento template je vhodné si naklonovat rovnou už v GitLabu, protože projekt už bude mít pojmenování podle vašeho přání. Součástí template je i konfigurace DOCKERU.

Import do nového projektu krok 1

Zde vybereme "Import projekt".

Path mapping

Import do nového projektu krok 2

Zde vybereme "Repo by URL.

Path mapping

Import do nového projektu krok 3

Vyplnění údajů pro import template do vašeho nového projektu:

1, Git repository URL - URL zdrojového repozitáře (můj template)
2, Username (optional) - vaše přihlašovací jméno
3, Password (optional) - vaše přihlašovací heslo
4, Project name - jméno nového projektu
5, Visibility Level - viditelnost projektu

Path mapping

Základní příkazy pro konfiguraci kontejnerů

Build image

docker-compose build

Toto by melo stahnout a nastavit vše potřebné

Sestaveni a spustení kontejnerů

docker-compose up  -d nebo
docker-compose up -d --build

V tuto chvili by mel byt docker projekt ready na http://localhost:84 viz soubor docker-compose.yml, kde to jde i změnit. --build používáme pro přegenerování image kontejneru.

http://localhost:84

ukončení kontejnerů

docker-compose down  

Potom je možné i na stejný port spustit jiný kontejner.

SQL databáze a adminer

Součásti konfigurace je SQL databáze a adminer. Najdeme jí na url:

http://localhost:84/adminer

Databáze mezi kontejnery je na portu 3306 viz soubor docker-compose.yml. Není potřeba psát do připojení k databázi IP a port. Stačí název service ze souboru docker-compose.yml vč. jména root a hesla.

mysqldb nebo laravel-mariadb-10.9.3

Neukládejte na Gitlab soubory DB, pouze sql dump. Jedná se o adresář ./data/database, který musí zůstat git ignore. Je možné si databázi přes adminer zálohovat a uložit do projektu jako soubor sql pro případ budoucího obnovení.

Seznam kontejnerů v aplikaci

Nginx

konfigurační soubor dockerfile

DockerfileNGINX

Webový server s reverzní proxy s otevřeným zdrojovým kódem. Pracuje s protokoly HTTP (HTTPS).

PHP

konfigurační soubor dockerfile

DockerfilePHP

PHP (rekurzivní zkratka PHP: Hypertext Preprocessor, česky „PHP: Hypertextový preprocesor“, původně Personal Home Page) je skriptovací programovací jazyk. Je určený především pro programování dynamických internetových stránek a webových aplikací například ve formátu HTML, XHTML či WML. PHP lze použít i k tvorbě konzolových a desktopových aplikací. Pro desktopové použití existuje kompilovaná forma jazyka.

MySQL - MariaDB

konfigurační soubor dockerfile

DockerfileMYSQL

MariaDB je relační databáze, která je komunitou vyvíjenou nástupnickou větví (tzv. „forkem“) MySQL. Hlavním důvodem k vytvoření této větve bylo udržení licence svobodného softwaru GNU GPL. Iniciativa, díky které tato větev vznikla, pochází od původních vývojářů MySQL, kteří se obávali o další osud a směřování tohoto softwaru po jeho odkoupení společností Oracle.[

Redis

konfigurační soubor dockerfile

DockerfileREDIS

Redis je úžasně jednoduché a při tom velmi mocné NoSQL in-memory key-value úložiště. Potřebujete akcelerovat vaší aplikaci jednoduše a při tom využít distribuované zdroje a současně mít redundanci nebo transakční ochranu? Tohle je úkol pro Redis.

Meilisearch

konfigurační soubor dockerfile

DockerfileMELISEARCH

Popisují se jako „otevřený zdroj, neuvěřitelně rychlý a hyperrelevantní vyhledávač, který zlepší váš zážitek z vyhledávání. Aktuální alternativy – Elasticsearch a Algolia.

Selenium Standalone Chrome - Selenium Docker

konfigurační soubor dockerfile

DockerfileCHROME

Spouštění testů Selenium v kontejnerech Docker podporuje provádění kontrol kódu agilnější rychlostí s kódem konvenčnější kvality. Výsledkem je produkt vynikající kvality.

MailHog

konfigurační soubor dockerfile

DockerfileMAILHOG

Potřebujete slepý vývojový SMTP server, který zachytí maily z aplikace či webu, ale už je nepředá dále? Pak vyzkoušejte MailHog. Funguje prakticky všude, je zadarmo a má webové rozhraní pro prohlížení zachycených zpráv.

Nastavení xdebug

Nastavení debug a portů:

Nastavení cesty k projektu a uvnitř kontejneru:

Routing

VŠE SPOUŠTÍME UVNITŘ KONTEJNERU.

Výpis rout v projektu

@laravel-php:/var/www/html$ php artisan route:list

Konfigurace routování

Výpis směrovací tabulky (router)

@laravel-php:/var/www/html$ php artisan route:list

Nastavení se provádí v adrrsáři routes.

/routes pro web /routes/web.php

Příklady nastavení routování web.php

1, přiklad automatického generování controlleru

Route::resource('/test', 'TestController')->only(['index', 'store', 'edit', 'update', 'destroy']);

nebo

Route::resource('/test', 'TestController')->except(['create', 'show']);

2, při vlastním nastavení jednotlivých akcí controlleru

/** controller homepage */
Route::get('/', 'App\Http\Controllers\HomepageController@default')->name('homepage_default');
Route::get('/detail/{id?}', 'App\Http\Controllers\HomepageController@detail')->name('homepage_detail');

Mazání cache

php artisan config:cache
php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan view:cache

Vytvoření Controlleru

Samostatný Controller

php artisan make:controller HomepageController

Příklad vrácení šablony v Controlleru v akci např. default:

    /**
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function detail(Request $request)
    {
      
              return view('homepage.detail', array(); // parametry předáváme jako pole, název šablony adresář.soubor bez blade.php
    }

Controller vč. předdefinovaných metod

php artisan make:controller HomepageController --resource

Nastavení globálních proměnných

globalni variable AppServiceProvider

Šablonovací systém "Blade"

Šablony jsou v adresáři resources/views a pojmenování má formát nazevsablony.blade.php. Při volání šablon vynecháváme .blade.php. Když je šablona v podadresáří, voláme nazevadresare.nazevsablony bez blade a přípony.

dědění layoutové šablony:

@extends('nazevlayoutu')

označení bloku html contentu, co se includuje podle příslušné akce controlleru do layoutu:

@section('content')
// nejaké html pro content
@endsection

příklad vložení contentu jednotlivých stránek do layoutu:

@yield('content')

pro případ vložení nějakého js nebo css konkrétní stránky do layoutu:

@section('stylesheets')
@endsection
@section('javascripts')
@endsection

příklad výpisu proměnné v layoutu:

{{ $id }}

příklad generování odkazu na pojmenovanou routu, kterou vložíme třeba do href html tagu a pod:

{{ route('homepage_detail') }}

vložení js nebo css z příslušné šablony do layoutu:

@yield('javascripts')
@yield('stylesheets')

příklad podmínky v layoutu:

@if(is_iterable($data))
@endif

příklad cyklu v layoutu:

@foreach ($data as $key => $value)
{{$value.name}} // přístup v poli v cyklu

      @if($loop->last) // v cyklu můžeme použít i iterátor.
          <hr style="border: 1px solid red">
      @endif

@endforeach

Databáze ORM

informace o databazi

php artisan db:show

informace o tabulce

php artisan db:table users

Vytvoří model src\app\models

php artisan make:model Product

Vytvoří model a migrační script src\app\models src\database\migrations

php artisan make:model Product -m

Migrační script migrujeme do db

php artisan migrate

Při změně migračního scriptu

php artisan migrate:refresh

Pro vrácení poslední migrace máme příkaz

php artisan migrate:rollback

Pridání indexu

$table->index('email');

Pro přejmenování indexu můžete použít renameIndex()

$table->renameIndex('email', 'mobile_no');

Pro odstranění indexu můžete použít dropIndex()

$table->dropIndex('email', 'mobile_no');

Migraci a kontroler lze vytvořit i zvlášť.

php artisan make:model Article
php artisan make:migration --create=articles create_articles_table
php artisan make:controller --model=Article ArticleController

Chcete-li vrátit zpět poslední operaci migrace.

php artisan migrate:rollback

Můžete vrátit zpět více počet migrací.

php artisan migrate:rollback --step=5

Reset vrátí zpět všechny migrace vaší aplikace.

php artisan migrate:reset