创建资料库
可以用 phpMyAdmin, 或是 HeidiSql, 或是 Navixxx。编码选择
资料库名称:laravel (可自行命名)
字元集:utf8mb4
定序:utf8mb4_unicode_ci
安装 Laravelcomposer create-project laravel/laravel blog
预设会安装最新版本。中间那两个 laravel 单字不要改。后面那个 blog 可以自己命名
例如在 C:\Web\ 底下执行,会产生
C:\Web\Blog
app
bootstrap
config
...
如果要安装指定版本,例如现有伺服器的php版本还是 7.x ,而现在 laravel 9 需要 php 8.x。所以只能使用 laravel 8composer create-project laravel/laravel=8.* blog
查看 laravel 版本php artisan
Laravel Framework 9.14.1
执行 composer update
编辑 .env
...APP_URL=http://laravel.test...DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=laravelDB_USERNAME=rootDB_PASSWORD=123456
安装 auth
参考官网 https://github.com/laravel/uicomposer 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 ,这又是另一个故事。先别那么麻烦。
安装 npmnpm 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-localizationcomposer 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'],
第一组代码就是网址所使用的。需要大写吗?以微软为例,它都是小写。
修改 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/#installationcomposer require phpoffice/phpspreadsheet --prefer-source --with-all-dependencies
composer install
这时候应该有下面几页可以用
首页 welcome
注册页 register
登入页 login
登入后的 home
登出 logout