Create Project Laravel 5.8 using Composer

min read

2021-01-02 08:11:21

by

Thanh Hòa

Day 7 #100DaysOfCode

Mình thích Laravel nên hôm nay mình sẽ bắt đầu tìm hiểu về nó xem sao, do mình cài PHP 7.2, vì thế mình sẽ cài đặt Laravel 5.8. Để cài được laravel 5.8 mình cần phải đủ yêu cầu sau:

+ PHP >= 7.1.3 (Laravel version 5.6 đến 5.8) , PHP>=7.0.0 (Laravel version 5.5), PHP >= 5.6.4 (Laravel version 5.4)
+ BCMath PHP Extension (Laravel 5.7 and higher)
+ Ctype PHP Extension (Laravel 5.6 and higher)
+ JSON PHP Extension (Laravel 5.6 and higher)
+ Mbstring PHP Extension
+ OpenSSL PHP Extension
+ PDO PHP Extension
+ Tokenizer PHP Extension
+ XML PHP Extension (Laravel 5.3 and higher)

Nói chung mình cũng mới tìm hiểu nên cũng không rành lắm mấy vụ hổ trợ trên lắm, chỉ biết là cài PHP >= 7.1.3, còn lại tính sau vậy gặp lỗi nào thì mò lỗi đó thôi. Còn không lỗi thì ngon lành kaka

Mở CMD lên mình chạy câu lệnh dưới đây để cài laravel 5.8

composer global require laravel/installer
laravel new laravel58
//or 
composer global require laravel/installer laravel58
//or
composer create-project --prefer-dist laravel/laravel blog "5.8.*"

Sau khi tải xong mình được thư mục giống dưới đây

 

+ app : trong dự án của chúng ta phần lớn thường lưu các file như , Controller,Models,middleware, đều nằm ở trong đấy
+ bootstrap : Chứa các tệp mà framework Laravel sử dụng để khởi động mỗi khi nó chạy.
+ config : là nơi cấu hình tập tin, như cấu hình database, cors,session,mail,…
+ database : là nơi chứa các file migrations,seed, factories
+ public : thư mục này chứa file index.php để phục vụ trang website, khi máy chủ trỏ đến, đồng thời chứa các file như: images,css,js để phục vụ cho giao diện website
+ resources : chứa thư mục (js,lang,sass,views), 
  – views: chưa các file template blade cấu hình giao diện người dùng
  – js : là nơi chưa giao diện front-end như(vuejs,react)
  – sass : file biên dịch css 
  – lang : chứa các file biên dịch ngôn ngữ
+ routes : dùng cấu hình bộ định tuyến cho các Route, thiết lập route website, restfull API, xác thực Broadcast
+ storage : nơi lưu trữ , caches, logs và các tệp hệ thống đã biên dịch
+ tests : dùng để test unit
+ vendor : chứa toàn bộ mã nguồn của laravel
+ .editorconfig : Cung cấp hướng dẫn trình soạn thảo văn bản/IDE của bạn về các standar mã hóa của Laravel (ví dụ: kích thước của thụt lề, charset, và  cắt khoảng trắng dấu). Bạn sẽ thấy điều này trong bất kỳ ứng dụng Laravel nào chạy 5.5 trở lên.
+ .env and .env.example : các biến môi trường (các biến được sẽ khác nhau trong mỗi phiên bản laravel) 
+ .gitignore and .gitattributes : Tệp cấu hình Git.
+ artisan : Cho phép bạn chạy các lệnh Artisan
+ composer.json and composer.lock : Tập tin cấu hình cho Composer; composer.json là người dùng có thể chỉnh sửa và composer.lock thì không phải. Những tệp này chia sẻ một số thông tin cơ bản về dự án và cũng xác định phụ thuộc PHP của nó.
+ package.json : cũng giống như composer.json, nhưng ở đây file package.json chứa thông tin các lệnh script để chạy NPM và devDependencies xây dựng hệ thống
+ phpunit.xml : nó là một tập tin cấu hình cho PHPUnit dùng để test unit
+ server.php : cấu hình trỏ tới thư mục public để hiển thị ứng dụng website, cần phải chạy lệnh php artisan serve
+ webpack.mix.js : là file cấu hình webpack, giúp ta build tất cả các file css, js, css pre-prosessor như scss,sass,less,…

Okay giờ tôi chạy thư mục đó bằng cách http://localhost/laravel58/public sẽ được giao diện như dưới đây

Create Project Laravel 5.8 using Composer

Các bạn thấy đó, để chạy mình cần phải trỏ tới thư mục public, giờ mình không thích, mình muốn bỏ public đi, chỉ sử dụng đường dẫn như thế này http://localhost/laravel58 
Okay, mình tạo file .htaccess trong thư mục laravel58

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]

RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
</IfModule>

giờ mình chạy thử lại đường dẫn http://localhost/laravel58 thì nó đã ok

Create Project Laravel 5.8 using Composer

Okay giờ mình mới mò trong project laravel này , mình sẽ sửa lại giao diện nó hiện thị khác xíu theo ý mình
+ Vào thư mục laravel58/resources/views, mở file welcome.blade.php và chỉnh sửa lại như sau:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">

        <!-- Styles -->
        <style>
            html, body {
                background-color: #fff;
                color: #636b6f;
                font-family: 'Nunito', sans-serif;
                font-weight: 200;
                height: 100vh;
                margin: 0;
            }

            .full-height {
                height: 100vh;
            }

            .flex-center {
                align-items: center;
                display: flex;
                justify-content: center;
            }

            .position-ref {
                position: relative;
            }

            .top-right {
                position: absolute;
                right: 10px;
                top: 18px;
            }

            .content {
                text-align: center;
            }

            .title {
                font-size: 84px;
            }

            .links > a {
                color: #636b6f;
                padding: 0 25px;
                font-size: 13px;
                font-weight: 600;
                letter-spacing: .1rem;
                text-decoration: none;
                text-transform: uppercase;
            }

            .m-b-md {
                margin-bottom: 30px;
            }
        </style>
    </head>
    <body>
        <div class="flex-center position-ref full-height">
            @if (Route::has('login'))
                <div class="top-right links">
                    @auth
                        <a href="{{ url('/home') }}">Home</a>
                    @else
                        <a href="{{ route('login') }}">Login</a>

                        @if (Route::has('register'))
                            <a href="{{ route('register') }}">Register</a>
                        @endif
                    @endauth
                </div>
            @endif

            <div class="content">
                <div class="title m-b-md">
                    <span>100DaysOfCode <strong>#Laravel</strong></span>
                </div>

                <div class="links">
                    <a href="https://laravel.com/docs">Docs</a>
                    <a href="https://laracasts.com">Laracasts</a>
                    <a href="https://laravel-news.com">News</a>
                    <a href="https://blog.laravel.com">Blog</a>
                    <a href="https://nova.laravel.com">Nova</a>
                    <a href="https://forge.laravel.com">Forge</a>
                    <a href="https://github.com/laravel/laravel">GitHub</a>
                </div>
            </div>
        </div>
    </body>
</html>

Để cho file đó được gọi lên, laravel đã cấu hình bộ route trong thư mục laravel58/routes, mình thấy nó có các file sao
+ api.php : cấu hình route cho api, chẳng hạn như dùng trong restful API
+ web.php : cấu hình route cho web, chẳng hạn các route cho front-end
+ channels.php : dành cho mục đích broadcasting, chẳng hạn cấu hình route cho ứng dụng nhận thông báo chat
+ console.php : dành cho việc đăng kí artisan command

Okay, chỉ mới tìm hiểu nên chẳng biết dùng sao, từ từ nghiên cứu vậy, giờ ta hãy mở file web.php trong thư mục routes

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Create Project Laravel 5.8 using Composer