已經可以在後台管理資料、也可以在前台顯示頁面了

接下來我想知道:如何替模組新增欄位呢?這是 CMS 的核心功能

目前的 pages 模組,編輯的後台有 title 與 description 兩個欄位(都是用 <input type="text" /> 管理)

resources/views/site/page.blade.php 也可以輕易取得這兩個欄位的值

    {{ $item->title }}
    <br />
    {{ $item->description }}

這兩個值實際存在資料庫的哪裡呢?

會發現並不在 pages table 內,而是出現在 page_translations table 內

(我猜測,如果沒開啟多語功能,應該就是出現在 pages table 內了?)

除此之外,也會在 page_revisions 的 payload 看到這兩個欄位的值,但這應該是「歷史修改紀錄」

類似 log 的功能,主要是以 page_translations 欄位為主吧!

值得一提的是,title 與 description 是原生的預設欄位

上次輸入 php artisan twill:make:module pages 指令時,就自動在 migration 內出現這兩行了

            $table->string('title', 200)->nullable();
            $table->text('description')->nullable();

這個設計顯然是 seo 考量,大家有把握的話,migration 內容隨意修改,我認為無所謂。


假設我今天想要擴充這個模組,讓每個頁面下方可以顯示一段「備註」

我想增加 notes 欄位,並且希望在後台使用 <textarea><textarea/> 管理,該怎麼做呢?


首先,打開 Twill/PageController 檔案

會看到 getForm 那邊有 description 的定義

我直接這樣加一段試試看

        $form->add(
            Input::make()->name('notes')->label('Notes')->type('textarea')->translatable()
        );

參考資料:https://twillcms.com/docs/form-fields/input.html


打開後台看看,會看到真的出現了 Notes 欄位的文字區塊!這非常方便

目前我們還沒新增 migration 檔案,所以實際上資料庫存不了這欄位

但就硬著頭皮按下 Update 看看吧?

結果居然跳出 Content saved. All good!

查看資料庫,會看到 page_revisions 的 payload 有出現 notes

但我更新 page.blade.php

    {{ $item->title }}
    <br />
    {{ $item->description }}
    <br />
    {{ $item->notes }}

根本就沒有內容。所以這邊的設計有點小奇怪,按下 Update 應該跳出 error 比較好。

但是沒關係 瑕不掩瑜


來正式修改資料表吧

php artisan make:migration add_notes_to_pages_module

內容就放

    public function up(): void
    {
        Schema::table('page_translations', function (Blueprint $table) {
            $table->text('notes')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('page_translations', function (Blueprint $table) {
            $table->dropColumn('notes');
        });
    }

然後打開 Models/Page.php

$fillable$translatedAttributes 陣列加入 'notes'

(我猜測,根據開啟多語功能與否,這兩個陣列其實擇一修改即可?沒關係先硬上)

這樣就大功告成囉!

打開網址 http://twill-play.local/pages/my-1st 會看到新的欄位正確顯示!

這次的 commit 內容可參考 https://github.com/howtomakeaturn/twill-play/commit/fef0e19a0e5d2ecaf3e87da683fb9690bda34976


順帶一提,官方文件 https://twillcms.com/docs/form-fields/input.html

提到新增欄位是寫

Schema::table('articles', function (Blueprint $table) {
    ...
    $table->string('subtitle', 100)->nullable();
    ...

});
// OR
Schema::table('article_translations', function (Blueprint $table) {
    ...
    $table->string('subtitle', 250)->nullable();
    ...
});

注意那個 OR

這邊應該是看有否開啟多語設定

也就是只要更新一張 table 即可


簡評

這流程真的非常棒,包含 wordpress 在內的許多 CMS,在新增欄位的時候,程式碼本身不需修改

欄位定義會出現在 database 內。雖然方便,但是後續很難以維護、擴充

反觀上述 twill 流程,幾乎就是平常 laravel 工程師的工作流程而已

後續就算交給一個只熟 laravel 而完全不會 twill 的人也沒關係,他可以自行在 page.blade 使用模組的資料

自由地開發他想要的頁面與樣式!


共有 3 則留言

米朵外送茶賴353797#台中東區西區外約旅館#沙鹿豐源外送花沐蘭溫莎堡旅館#北屯區外送大奶學生妹貧乳小隻馬TG搜索@cok68#大雅區叫在校生援交妹外約旅館

中部試車:

嶺東科大 甜乙心 158.46.D.20歲

小隻馬 年輕粉嫩的肉體很難讓人把控的住 潔白皮膚 摸起來滑滑的 會自慰 自慰的時候會淫叫喔 臀部翹起來時 會讓人忍不住想去衝擊她 CP值超高 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

中興大學 甜汶柔 162.55.F.21歲

巨乳學生妹 還可接無套哦 有哥哥想要來喝這杯好茶嘛?年紀雖然小 但經驗可不少 會說各種騷話 耳朵吹氣 輕工挑逗 搖晃爆乳 叫聲好聽 她幾乎沒有服務和尺度上的限制 超好配合der 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

勤益大學 甜美芹 158.45.C.18歲

蘿莉的外表下是叛逆的心 單親家庭長大的叛逆少女 有著極強的自我風格 身材嬌小看似可愛 一旦哥哥你大意 可是會失精 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

4#台灣體大 甜玓瓅 166.48.D.22歲 妹妹性欲很強 床上嫵媚動人 水多又耐操 清秀臉蛋淫蕩騷嫩穴 求插 求幹 熱愛跳舞健身 笑起來非常陽光 惹火度百分百的性感寶貝 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

明道大學 甜靖晴 158.46.D.20歲

皮膚白皙 粉嫩巨乳 窄小緊實嫩穴 娃娃音 顏值絕對爆表 女友fu十足 性格超好的 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

弘光科大 甜苡然 155.44.B.19歲

可愛型學生妹 滿滿的女友fu 性格活潑 不做作 青澀害羞的臉龐 翹著屁股等你後入 絕對讓你硬爆 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

米朵外送茶賴353797#高雄左營區外約旅館TG搜索@cok68#鳳山區艾旅金鳳凰旅館外約初次短期下海兼職#小港區出差外約旅港#三民區外約老司機吃魚喝茶#苓雅區旅遊叫小姐學生妹外約打炮

學生妹推薦 #私房菜 學生妹大特價

【#國立學生妹2個】 ❤ 菜菜 158cm Ccup 21歲 44kg 特色:清純 皮膚超級白皙 粉奶 ❤ 拉妹 160cm Dcup 20歲 47kg 特色:大奶大眼蜜桃臀酒窩 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

【#醫學學生妹1個】 ❤冰冰 155cm Bcup 19歲 43kg 特色:清純害羞被調教的類型 只有過一次性經驗 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

【#正修科技學生妹1個】 ❤妮妮 162cm E奶 50kg 22歲 特色:美腿巨乳兼職麻豆高顏值 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

【#師範學生妹】 ❤安安 158cm Dcup 18歲 45kg 特色:幼齒 火辣身材 床上騷 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

【#輔英學生妹3個】 ❤妞妞 158cm Dcup 20歲 44kg 特殊:大奶高顏值小騷貨 ❤ 小波 165cup Dcup 21歲 48kg 特色:美腿水蛇腰兼職外拍麻豆 ❤果果 152cm Acup 18歲 42kg 特殊:貧乳嬌小幼齒可愛清純 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

米朵外送賴353797#台北中山區旅館飯店叫小姐TG搜索@cok68#萬華區出差約汽車旅館外送妹妹#信義松山區按摩舒壓放鬆外約旅館#內湖旅館外約旅館叫學生妹TG搜索@cok68

學生妹都放假啦 ~ 今日推薦學生妹區

司司 161/45kg/C/21歲 幼齒學生妹 甜美可愛 青澀 清純 鄰家女孩
笑容超超超甜的學生妹妹 可抱入懷裡享受她帶來的服務噢 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

沫沫 158/44kg/B+/19歲 幼嫩嫩妹 極品嫩乳粉鮑 可調教 妹妹剛開苞沒多久~
跟她做愛猶如處女般緊緻 筷子腿 態度好 會害羞 聽話 配合高 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

小艾 163/45kg/C/22歲 高顏質下海初兼 不止有臉蛋 還有超吸睛身材 重點服務也很棒 貼心不偷時 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

寶貝 162/46kg/D/20歲 翹臀 臉蛋精緻 粉鮑 情趣內衣 絲襪美腿 性感誘人 點起你心中的欲火 床上很開放 約她解鎖更多性愛姿勢 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】

重重 161/46kg/E/19歲 童顏巨乳小隻罵 很好騎 擁有女生都羨慕的魔鬼身材 會搖 蜜桃臀很緊實 撞上去滿滿肉感 會的姿勢很多 大膽敢玩 會的姿勢很多 矯情性格好 服務更好 【賴ID:353797或賴eyey168】 【學生頻道:https://t.me/eyey168】