建立於: 4年前 ( 更新: 4年前 )
Laravel 8大改版,我的網站也跟著改版,我網站上的「筆記」及「文章」本來是分開兩個區塊的。
這次把他整合在一起了,反正也沒什麼文章,合起來內容看起來比較多。:p
我對文章的定義,就是內容較多較屬於原創的部份。
筆記則是隨手記錄,供日後查詢用,筆記可能原創或網路上抄來整理後的結果。
這次升級,分兩天進行,第一天是踩地雷升級後台,從5.7.28升到8.8.0,
由於Laravel噴錯滿明確的,修改起來並不難,只有在改後台的Routes時,邊改邊唸了一下下。
有跟我一樣升級的人,應該懂我在說什麼。
還好我的Vim marco已到爐火純青的地步啦,大概三分鐘內搞定,壓空白自動改寫,
不由心中再次讚嘆Vim的巨集功能真是有夠好用。
另一天,進行前台套版大改版,但一切從簡。
本文單純閒聊,分享我怎麼改的,並不是教學如何升級Laravel。
如何升級Laravel,可以看看我的舊文章。
https://www.ccc.tc/article/how-to-update-ow-backend
這次升級,因為是大版號,所以我的策略也是直接裝一套新的,再把我的後台入到composer.json中。
但其實可以試試調composer.json中的版號進行升級哦 ,可以看看Laravel的Upgrade Guide.
https://laravel.com/docs/8.x/upgrade
提到Laravel版號,剛好前陣子有朋友問我過我,如何取得Laravel的版號,我順便貼到這裡吧..
以上講遠了,回到本文,前台程式碼部份,這裡我把區塊編號(b_ids)改為array了,
原本只顯示單一內容就變成可以直顯示多個區塊內容啦,不知怎麼的改Laravel改起來特別容易。
另外,在下方內容Model中,為啥我要自訂table及primaryKey ,絕對不是我太閒或看起來比較厲害,
是因為我後台在Laravel之前就有啦,因此,所有的資料表欄位早就定義好了,
才會出現這種自訂$table及$primaryKey的情況,不然基本上我會採用Laravel的規則叫ID就好了,然後Table是複數。
這次改版大概學到另一件事,就是我吐的資料都是相同的,不應該換個版連Controller都要換掉是吧。
所以,我把樣版的資料夾拉出來改動態了,以後要調整不同的樣版,改frontend就行啦。(開始計劃來搞個多樣版前台)
一切從簡後,看起來網站速度有明顯提升了,PageSpeed Insights有98分耶。
這次把他整合在一起了,反正也沒什麼文章,合起來內容看起來比較多。:p
我對文章的定義,就是內容較多較屬於原創的部份。
筆記則是隨手記錄,供日後查詢用,筆記可能原創或網路上抄來整理後的結果。
這次升級,分兩天進行,第一天是踩地雷升級後台,從5.7.28升到8.8.0,
由於Laravel噴錯滿明確的,修改起來並不難,只有在改後台的Routes時,邊改邊唸了一下下。
有跟我一樣升級的人,應該懂我在說什麼。
use App\Http\Controllers\UserController;
Route::get('/user', [UserController::class, 'index']);
還好我的Vim marco已到爐火純青的地步啦,大概三分鐘內搞定,壓空白自動改寫,
不由心中再次讚嘆Vim的巨集功能真是有夠好用。
另一天,進行前台套版大改版,但一切從簡。
本文單純閒聊,分享我怎麼改的,並不是教學如何升級Laravel。
如何升級Laravel,可以看看我的舊文章。
https://www.ccc.tc/article/how-to-update-ow-backend
這次升級,因為是大版號,所以我的策略也是直接裝一套新的,再把我的後台入到composer.json中。
但其實可以試試調composer.json中的版號進行升級哦 ,可以看看Laravel的Upgrade Guide.
https://laravel.com/docs/8.x/upgrade
提到Laravel版號,剛好前陣子有朋友問我過我,如何取得Laravel的版號,我順便貼到這裡吧..
$laravel_version=app()::VERSION;
以下ow_source就是我己做後台啦,透過psr4載入就能用了。
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/",
"Ow\\Model\\": "app/ow_source/seo-model/",
"Ow\\": "app/ow_source/seo-class/"
}
},
當然RouteServiceProvider要補上我自己後台專用的路由
public function boot()
{
$this->configureRateLimiting();
$this->routes(function () {
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
Route::middleware('owadmin')
->namespace($this->namespace)
->group(base_path('app/ow_source/ow_routes.php'));
Route::middleware('owapi')
->namespace($this->namespace)
->group(base_path('app/ow_source/ow_routes.php'));
});
}
以上講遠了,回到本文,前台程式碼部份,這裡我把區塊編號(b_ids)改為array了,
原本只顯示單一內容就變成可以直顯示多個區塊內容啦,不知怎麼的改Laravel改起來特別容易。
public function articles($bymonth){
$b_ids=[1,2]; //預設首頁的區塊
$queryStr = "";
if(!preg_match('/\d{4}-(\d?\d$)/u', $bymonth, $matches)){
return abort(404);
};
$bymonth.="-01"; //補上1號
$queryStr.=sprintf(" AND c_dt BETWEEN '%s' AND DATE_ADD('%s', INTERVAL 1 MONTH)", $bymonth,$bymonth);
$contents = Content::ofBlock($b_ids)
->whereRaw('1 = 1'.$queryStr)
->orderBy('c_id','desc')->get();
$archives = $this->archives($b_ids); //封存資料
//return $archives;
return view("$this->frontend.pages.index",[
'contents'=>$contents,
'archives'=>$archives
]);
}
本來是用where,改whereIn,就這麼可以用了@@,下方的Model可以看到,我改成whereIn。另外,在下方內容Model中,為啥我要自訂table及primaryKey ,絕對不是我太閒或看起來比較厲害,
是因為我後台在Laravel之前就有啦,因此,所有的資料表欄位早就定義好了,
才會出現這種自訂$table及$primaryKey的情況,不然基本上我會採用Laravel的規則叫ID就好了,然後Table是複數。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\Facades\DB;
class Content extends Model
{
protected $table='content';
protected $primaryKey='c_id';
public function scopeOfBlock($query, $b_ids)
{
return $query->whereIn('b_id', $b_ids)->where('is_publish',1);
}
這次改版大概學到另一件事,就是我吐的資料都是相同的,不應該換個版連Controller都要換掉是吧。
所以,我把樣版的資料夾拉出來改動態了,以後要調整不同的樣版,改frontend就行啦。(開始計劃來搞個多樣版前台)
return view("$this->frontend.pages.index",[
'contents'=>$contents,
'archives'=>$archives
]);
這是我的修改差異
一切從簡後,看起來網站速度有明顯提升了,PageSpeed Insights有98分耶。

No Comment
Post your comment