摘要:現(xiàn)在我們通過一個用戶登錄來講解一個事件,監(jiān)聽一個事件并觸發(fā)一些操作的全過程。首先,在中注冊事件與監(jiān)聽器之間的映射關(guān)系。在中,我們把用戶狀態(tài)分為,,根據(jù)登錄用戶的不同狀態(tài)來顯示出不同的內(nèi)容。
事件存在很多方面,比如登錄、購買商品、搜索、查看文章等等。 監(jiān)聽器監(jiān)聽到事件發(fā)生后,會執(zhí)行一些操作。Laravel使用觀察者模式來實現(xiàn)這種監(jiān)聽機制。 現(xiàn)在我們通過一個用戶登錄來講解一個事件,監(jiān)聽一個事件并觸發(fā)一些操作的全過程。
Registering Events / Listeners首先,在App/Providers/EventServiceProvider.php中注冊事件與監(jiān)聽器之間的映射關(guān)系。下面的三個映射關(guān)系中我們只用到了LoginEvent和LoginSuccess
protected $listen = [ "AppEventsLoginEvent" => ["AppListenersLoginSuccess"], "AppEventsLogoutEvent" => ["AppListenersLogoutSuccess"], "AppEventsUserAccess" => ["AppListenersUserAccess"] ];
然后,在根目錄下執(zhí)行artisan
$ php artisan event:generate
執(zhí)行命令成功后,分別會在App/Events和AppListeners下生成App/Events/LoginEvent和App/Listeners/LoginSuccess等php文件
定義事件類在LoginEvent事件中什么都沒有改動,也不需要改動
定義監(jiān)聽器現(xiàn)在在App/Listeners中有了一個LoginSuccess.php監(jiān)聽器,為了以后方面,我們在App/Listeners中新建一個基礎(chǔ)的監(jiān)聽類ListenerBase.php
statut = new Statut; } } ?>ListenerBase.php中實例化了一個Statut類,這個Statut類在App/Services文件夾下,下面我們會用到。
現(xiàn)在來到App/Listeners/LoginSuccess.php
statut->setLoginStatut($event); } }LoginSuccess繼承了ListenerBase, handle方法中$this->statut->setLoginStatut獲取了登錄用戶的狀態(tài)
Statut.php在App/Services中新建php文件Statut.php,再此文件中,主要定義了獲取當前登錄用戶的狀態(tài)的幾個方法,當觸發(fā)事件后,會執(zhí)行Statut.php文件中的操作
put("statut", auth()->user()->role->slug);//auth()->user()在用戶登錄完成后才會有值 } /** * Set visitor statut * * @return void */ public function setVisitorStatut(){ session()->put("statut", "visitor"); } /** * Set the statut * * @return void */ public function setStatut(){ if(!session()->has("statut")){ session()->put("statut", auth()->check() ? auth()->user()->role->slug : "visitor"); } } } ?>
好了,事件和監(jiān)聽器完成之后,就需要觸發(fā)操作了,這里我們用中間件(Middleware)
Defining Middleware使用artisan命令來創(chuàng)建中間件 App/Http/Middleware/App.php
$ php artisan make:middleware App執(zhí)行成功后,使用全局方法event
最后,再將App中間件注冊到kernel.php中
完成上面的操作后,就可以獲取用戶的登錄狀態(tài)了。在Statut.php中,我們把用戶狀態(tài)分為visitor,admin,user,根據(jù)登錄用戶的不同狀態(tài)來顯示出不同的內(nèi)容。例如,如果是admin,則他可以進入后臺并執(zhí)行一些操作,如果是user或者visitor,那么他只能瀏覽一些頁面
總結(jié):了解自己想要做什么,達到什么樣的目的,操作的過程中,思路應(yīng)清晰。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/22578.html
摘要:現(xiàn)在我們通過一個用戶登錄來講解一個事件,監(jiān)聽一個事件并觸發(fā)一些操作的全過程。首先,在中注冊事件與監(jiān)聽器之間的映射關(guān)系。在中,我們把用戶狀態(tài)分為,,根據(jù)登錄用戶的不同狀態(tài)來顯示出不同的內(nèi)容。 事件存在很多方面,比如登錄、購買商品、搜索、查看文章等等。 監(jiān)聽器監(jiān)聽到事件發(fā)生后,會執(zhí)行一些操作。Laravel使用觀察者模式來實現(xiàn)這種監(jiān)聽機制。 現(xiàn)在我們通過一個用戶登錄來講解一個事件,監(jiān)聽一個...
摘要:目前支持的認證有。英文不好的同學比如我,下面是中文文檔通過擴展的,實現(xiàn)了很多第三方認證。國內(nèi)的有微博微信豆瓣。至于和的具體值,這個是由新浪微博分發(fā)給你的,在新浪微博的授權(quán)回調(diào)頁中填寫。 前言 第三方登錄認證能簡化用戶登錄/注冊的操作,降低用戶登錄/注冊的門檻,對提高應(yīng)用的用戶轉(zhuǎn)化率很有幫助。 Socialite Laravel 為我們提供了簡單、易用的方式,使用 Laravel Soc...
摘要:完全沒有基礎(chǔ)的人基本上很難安裝并使用成功。目錄用于存放的依賴包。開啟訪問即可看到有的字樣出現(xiàn),代表安裝配置成功。 最近開始開坑,玩php,而且laravel最近很熱門,所以就這樣了。小白php直接接觸框架真的不容易,以前python接觸的django框架看官網(wǎng)文檔覺得寫得勉強吧,不是太好看,直到看到laravel的文檔才知道什么叫變態(tài)。完全沒有基礎(chǔ)的人基本上很難安裝并使用成功。而且即使...
摘要:我們可以為元素添加屬性然后在回調(diào)函數(shù)中接受該元素在樹中的句柄,該值會作為回調(diào)函數(shù)的第一個參數(shù)返回。使用最常見的用法就是傳入一個對象。單向數(shù)據(jù)流,比較有序,有便于管理,它隨著視圖庫的開發(fā)而被概念化。 面試中問框架,經(jīng)常會問到一些原理性的東西,明明一直在用,也知道怎么用, 但面試時卻答不上來,也是挺尷尬的,就干脆把react相關(guān)的問題查了下資料,再按自己的理解整理了下這些答案。 reac...
閱讀 1998·2021-09-30 09:53
閱讀 1841·2021-09-24 09:48
閱讀 1755·2019-08-30 14:01
閱讀 2170·2019-08-29 18:35
閱讀 1249·2019-08-26 18:27
閱讀 2979·2019-08-26 12:12
閱讀 942·2019-08-23 17:16
閱讀 932·2019-08-23 15:31