2016-04-01 20 views
0

您好我正在laravel做一個網站。 我想做一個功能,需要在任何控制器之前執行。在任何控制器之前需要執行的laravel中寫入函數

例子: 我之類的函數

function xyz(){ 
    //do code here 
} 

此功能需要執行時,用戶通過網頁清爽網站或做一些Ajax requst。

我知道用笨是有辦法做到這一點使用鉤

$hook['pre_controller'] = array(
     'class' => 'MyClass', 
     'function' => 'Myfunction', 
     'filename' => 'Myclass.php', 
     'filepath' => 'hooks', 
     'params' => array('beer', 'wine', 'snacks') 
); 

什麼是laravel的方式做到這一點?

回答

1

您可以使用Laravel中間件來實現此目的。中間件可以註冊爲所有控制器/路由的全局,並且可以讓您執行該功能(或者可以使用路由器組將其註冊爲子集路由)。

實施例:

<?php 

namespace App\Http\Middleware; 

use Closure; 

class MyMiddleware 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     // call your function 
     $this->xyz(); 

     return $next($request); 
    } 

    public function xyz() 
    { 
     // do something 
    } 
} 

Laravel documentation on Middleware

+0

我們可以使用Filter of laravel來做到這一點。 – Kango

+0

路由過濾器已被棄用,優先於中間件,並在2015年12月完全由Laravel 5.2發佈刪除。 –

+0

@我的laravel項目版本是4.2 – Kango

相關問題