iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 6
0
Modern Web

PHP框架-Symfony4 + api platform 系列 第 6

Day#6 用監聽器(Event Listener) 來當個偷窺狂吧!!

  • 分享至 

  • xImage
  •  

上一篇有說到監聽器會幫我們在特定時候做我們要做的事,那我們要怎麼創建一個監聽器呢!?


首先,先在src目錄下建立一個資料夾,裡面建立一個Class

接著,在class裡建立一個function,並在裡面寫自己要做的事情,並給予黑科技註解式寫法

<?php


namespace App\Doctrine;
use Doctrine\ORM\Mapping as ORM;

class TestListener
{

    /**
     * @ORM\PreUpdate
     */
    public function preUpdateHandler(){
        echo 12345;
    }

}

提醒一下, 記得一定要import ORM 哦 !!! 不然就不能使用黑科技magic了

這邊的意思,就是指說,
在實體類update前,會去執行preUpdateHandle這個function,function名稱可以自己取,不會有任何影響

簡單創建完一個監聽器後,我們要開始來使用它了

要使用監聽器,我們必須先到service.yaml註冊,將它視為一個服務,才能使用在實體類上

註冊完以後,就可以在實體類上使用啦~

/**
*@ORM\EntityListeners({"App\Doctrine\TestListener"})
*
/
class Test{

}

括弧裡放的一樣式監聽器的路徑

其實說簡單點,監聽器也可以叫作觸發器,就是這個事件在什麼時候觸發這樣

這裡把監聽器講得看起來很簡單...
但其實真的在用的時候,function裡面的code會複雜很多,等等...
這不是廢話嗎?難道上戰場還有在那邊給你等一下的哦


這篇篇幅太短了,怕會被ban掉,就先偷提一下Validation (驗證) 好了~

一般我們在頁面上看到的輸入框,
像是在註冊帳號密碼的時候,會要你帳號至少輸入一個英文,密碼至少英文數字幾碼組合,或是欄位不可以為空白之類的,或是欄位的長度,html的input是可以幫我們做到些許的驗證的

但一些客製化的我們必須自己來,對...身為一個盡責的工程師..沒有的就是要自己來!!

驗證的話,symfony一樣有幫我們準備一些基本的可以用,
在第二篇的時候有提到,從toolbar可以看見表單submit後回傳的錯誤驗證,裡面的資訊包含驗證錯誤的欄位名稱,
驗證錯誤的訊息,而驗證錯誤的訊息可以透過翻譯檔案來根據語系翻譯成想要的語言

下一篇就要來講一些symfony提供我們可以使用的驗證及兩個簡單的客製化驗證,
還有如何將驗證錯誤的訊息加到翻譯檔裡~


上一篇
Day#5 實體類(Entity)與Symfony的生命週期(lifecycle)
下一篇
Day#7 驗證(Validation) 也可以搭配翻譯蒟蒻
系列文
PHP框架-Symfony4 + api platform 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言