====== Laravel ====== ===== Instalacja ===== 1. Zainstaluj [[PHP]], [[MySQL]]. Może być [[XAMPP]] albo [[WampServer]]. Jeżeli wykonujesz instalację produkcyjną, zobacz [[linux:lamp]]. 2. W MySQL ustawiamy domyślny silnik na InnoDB (poniższym poleceniem na czas jednej sesji lub permanentnie w my.ini ''default-storage-engine=InnoDB''). mysql -u root -p SET @@global.default_storage_engine = 'InnoDB'; exit service mysql restart 3. Instalujemy Composer z getcomposer.org. Composer wymaga PHP. Katalog z zainstalowanym PHP powinien być dodany do Path. 4. Instalujemy ''Laravel Installer'' jako globalną zależność Composer'a. composer global require laravel/installer 5. Dodajemy ''%USERPROFILE%\AppData\Roaming\Composer\vendor\bin'' do Path. Dzięki temu będziemy mogli wywołać ''laravel'' z wiersza poleceń. 6. Tworzymy nowy projekt. Załóżmy, że będzie się nazywał ''blog''. laravel new blog cd blog 7. Tworzymy nową bazę danych. Następnie edytujemy plik ''.env'' w katalogu projektu podając m. in. parametry połączenia do bazy danych. APP_URL=http://localhost:8000 DB_HOST=localhost DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret 8. Opcjonalnie dodajemy [[Voyager]]. Jeżeli nie potrzebujesz [[Voyager]]a, przejdź do kroku 11. composer require tcg/voyager 9. Instalujemy Voyager, zgodnie z instrukcją https://voyager-docs.devdojo.com/getting-started/installation. Opcja ''with-dummy'' dodaje przykładowe dane. php artisan voyager:install --with-dummy 10. Tworzymy konto administratora. Opcja ''create'' informuje o tym, że chcemy utworzyć nowe konto, a nie tylko podnieść poziom uprawnień istniejącemu użytkownikowi. php artisan voyager:admin your@email.com --create 11. Laravel ma własny serwer, który możemy uruchomić następująco: php artisan serve Aplikacja będzie dostępna pod adresem ''localhost:8000''. Na administratora w Voyagerze zalogujesz się na stronie ''localhost:8000/admin'' podając: admin@admin.com / password ===== Rozwiązywanie problemów ===== Jeżeli natkniesz się (np. podczas próby wykonania migracji) na błąd ''Specified key was too long'', upewnij się ze wykonałeś/aś krok (2), oraz ustaw w ''app/Providers/AppServiceProvider.php'', metodzie ''boot'': use Illuminate\Support\Facades\Schema; ... public function boot(){ Schema::defaultStringLength(191); } Dlaczego akurat 191? Cytat z https://stackoverflow.com/questions/23786359/laravel-migration-unique-key-is-too-long-even-if-specified You have to set the length of the indexed column according to the limit of 767 bytes. Be aware that VARCHAR may have 1, 2 or 4 bytes for each length unit. Example: utf8_mb4 (4 bytes) -> 767 / 4 = 191. Otherwise utf8_general_ci for VARCHAR(X) with X < 85 ( 1 byte ) = O(85) , or utf8_general_ci for VARCHAR(X) with X >= 86 ( 2 bytes ) -> 767 / 2 = 383. Consider also other columns lenght in multiple column indexes. ===== Pierwsze kroki ===== Artisan jest programem dołączonym z Laravel. Dostępne komendy wylistujesz poleceniem ''php artisan list''. Polecenia wywołujemy z głównego katalogu (root) projektu. Jeżeli uruchamiasz pobrany projekt (np. z [[Git]]a), musisz na samym początku założyć bazę danych, skonfigurować ''.env'' i uruchomić migracje: php artisan migrate php artisan db:seed Można usunąć wszystkie tabele, następnie stworzyć od nowa (migrate:fresh) i wypełnić danymi (seed): php artisan migrate:fresh --seed Konsola [[CLI]] Laravela php artisan tinker Ściąga z najważniejszymi poleceniami (pomijam ''php artisan'' na początku polecenia): ^ Polecenie ^ Opis ^ | make:controller PostsController | Tworzy nowy kontroler | | make:model Post -m | Tworzy nowy model (-m dodaje migrację) | | route:list | Wypisuje aktualnie dostępny routing. | | db:seed | Wypełnia bazę danych danymi (DatabaseSeeder.php) | ===== Bootstrap i React ===== Instalujemy ''laravel/ui'' za pomocą [[Composer]]. Do pobrania źródła może być potrzebny [[Git]]. composer require laravel/ui Teraz można zainstalować [[Bootstrap]], [[React]] lub inne frameworki, np. [[Vue]]. php artisan ui bootstrap php artisan ui react Dodanie opcji ''auth'' w powyższych poleceniach stworzy szkielet do strony logowania/rejestracji. php artisan ui bootstrap --auth Instalujemy zależności. npm install Pozostało skompilować zasoby (oraz oczywiście dołączyć .css i .js z katalogu ''public'' w [[HTML]]). npm run dev lub npm run prod Można też monitorować zmiany w trybie ciągłym. npm run watch