在laravel中编写需要在任何控制器之前执行的函数

时间:2016-04-01 11:03:21

标签: laravel-4

您好我在laravel做一个网站。 我试图做一个需要在任何控制器之前执行的函数。

示例: 我有像

这样的功能
function xyz(){
    //do code here
}

此功能需要在用户现场刷新页面或执行一些ajax请求时执行。

我知道codeigniter有一种方法可以使用hook

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

laravel的做法是什么?

1 个答案:

答案 0 :(得分:3)

您可以使用Laravel Middleware来实现此目的。中间件可以在所有控制器/路由中注册为全局,并允许您执行该功能(或者您可以使用路由器组将其注册为路由子集)。

示例:

<?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