Laravel 系列 01 安装

创建资料库
可以用 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=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=laravelDB_USERNAME=rootDB_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'],

第一组代码就是网址所使用的。需要大写吗?以微软为例,它都是小写。
http://img2.58codes.com/2024/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


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章