iT邦幫忙

0

Laravel 系列 01 安裝

  • 分享至 

  • xImage
  •  

創建資料庫
可以用 phpMyAdmin, 或是 HeidiSql, 或是 Navixxx。編碼選擇
資料庫名稱:laravel (可自行命名)
字元集:utf8mb4
定序:utf8mb4_unicode_ci

安裝 Laravel
composer create-project laravel/laravel blog
預設會安裝最新版本。中間那兩個 laravel 單字不要改。後面那個 blog 可以自己命名
例如在 C:\Web\ 底下執行,會產生
C:\Web\Blog
app
bootstrap
config
...

如果要安裝指定版本,例如現有伺服器的php版本還是 7.x ,而現在 laravel 9 需要 php 8.x。所以只能使用 laravel 8
composer create-project laravel/laravel=8.* blog

查看 laravel 版本
php artisan
Laravel Framework 9.14.1

執行 composer update

編輯 .env

...
APP_URL=http://laravel.test
...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=123456

安裝 auth
參考官網 https://github.com/laravel/ui
composer require laravel/ui

以下三擇一
php artisan ui bootstrap --auth
php artisan ui vue --auth
php artisan ui react --auth

目前我對後兩者不熟,所以我還是直接使用第一種。

laravel/ui 跟 laravel/breeze 有何不同?
breeze 是 laravel 9 的官網所介紹的。前端框架使用 Taiwind ,這又是另一個故事。先別那麼麻煩。

安裝 npm
npm install
npm run dev
這兩個指令執行完,會有提示訊息

> dev
> npm run development

> development
> mix

        Additional dependencies must be installed. This will only take a moment.

        Running: npm install resolve-url-loader@^5.0.0 --save-dev --legacy-peer-deps

        Finished. Please run Mix again.

直接再執行一次
npm run dev

出現另一段訊息

1 WARNING in child compilations (Use 'stats.children: true' resp. '--stats-children' for more details)
webpack compiled with 1 warning

執行 npm install autoprefixer@10.4.5 --save-exact
接著再執行一次 npm run dev
這時候應該顯示成功。

參考 WARNING in child compilations (Use 'stats.children: true' resp. '--stats-children' for more details)

使用 migrate 建立資料表
php artisan migrate

設定網站
這個有很多種方式。最簡單的是用 php artisan serve,執行後通常會運行在 8000 port。開啟瀏覽器,進入 http://localhost:8000
或是用 xampp, 或是用 wamp, 或是用 nginx, 或是用 docker, docker+apache, docker+nginx。
我是使用可移動式的 apache + php + mysql, 可以我另一篇多版本 php 共存
這裡先略過這個。先假設網址是 http://laravel.test
我是去編輯 Windows 的 hosts
C:\Windows\System32\drivers\etc\hosts

127.0.0.1   laravel.test

安裝多語套件
套件:mcamara/laravel-localization
參考官網:https://github.com/mcamara/laravel-localization
composer require mcamara/laravel-localization
下面這是一個指令,是一行。本篇可能因寬度限制會有換行。記得下面這是一個指令,不是兩個。
php artisan vendor:publish --provider="Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider"

編輯 \config\laravellocalization.php
預設開啟的是 en 跟 es,把 es 關閉。然後下面原本簡中、繁中那兩行不動, I don't like it. 另外新增兩行

        //'es'          => ['name' => 'Spanish',                'script' => 'Latn', 'native' => 'español', 'regional' => 'es_ES'],
        ...
        //'zh'          => ['name' => 'Chinese (Simplified)',   'script' => 'Hans', 'native' => '简体中文', 'regional' => 'zh_CN'],
        //'zh-Hant'     => ['name' => 'Chinese (Traditional)',  'script' => 'Hant', 'native' => '繁體中文', 'regional' => 'zh_CN'],
        'zh-cn'         => ['name' => 'Chinese (Simplified)',   'script' => 'Hans', 'native' => '简体中文', 'regional' => 'zh_CN'], 
        'zh-tw'         => ['name' => 'Chinese (Traditional)',  'script' => 'Hant', 'native' => '繁體中文', 'regional' => 'zh_TW'],

第一組代碼就是網址所使用的。需要大寫嗎?以微軟為例,它都是小寫。
https://ithelp.ithome.com.tw/upload/images/20220601/20148098cBO8zAKdYx.png

修改 config/app.php
原本預設 en, 改成 zh-tw

'locale' => 'zh-tw'

修改路由
原本的 routes/web.php

Route::get('/', function () { 
    return view('welcome'); 
}); 
Auth::routes(); 
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');

使用 group 把上面的內容包起來,改成

Route::group(  
    [  
    'prefix' => LaravelLocalization::setLocale(),  
    'middleware' => [ 'localeSessionRedirect', 'localizationRedirect', 'localeViewPath' ],  
    ], function()  
{  
    Route::get('/', function () { 
        return view('welcome'); 
    }); 
    Auth::routes(); 
    Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); 
});

修改 app/Http/Kernel.php
在 routeMiddleware 陣列後面新增

    protected $routeMiddleware = [
        /**** OTHER MIDDLEWARE ****/
        'localize'                => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class,
        'localizationRedirect'    => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class,
        'localeSessionRedirect'   => \Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect::class,
        'localeCookieRedirect'    => \Mcamara\LaravelLocalization\Middleware\LocaleCookieRedirect::class,
        'localeViewPath'          => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationViewPath::class
    ];

開啟網頁 http://laravel.test 應該會自動轉址到 http://laravel.test/en
咦,怎麼沒有轉到 zh-tw ? 大概是因為現在的語言檔還只有 en。但是此時網址使用 zh-tw 也是可以的 http://laravel.test/zh-tw

phpoffice/phpspreadsheet
應該很有機會用到,先裝一下。
官網 https://phpspreadsheet.readthedocs.io/en/latest/#installation
composer require phpoffice/phpspreadsheet --prefer-source --with-all-dependencies
composer install

這時候應該有下面幾頁可以用
首頁 welcome
註冊頁 register
登入頁 login
登入後的 home
登出 logout


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言