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

Laravel 4 在laravel中写入需要在任何控制器之前执行的函数,laravel-4,Laravel 4,嗨,我正在做一个网站在拉威尔。 我试图做一个需要在任何控制器之前执行的函数 示例: 我有类似的功能 function xyz(){ //do code here } 当用户在站点上刷新页面或执行一些ajax请求时,需要执行此函数 我知道使用codeigniter有一种使用钩子的方法 $hook['pre_controller'] = array( 'class' => 'MyClass', 'function' => 'Myfuncti

嗨,我正在做一个网站在拉威尔。 我试图做一个需要在任何控制器之前执行的函数

示例: 我有类似的功能

function xyz(){
    //do code here
}
当用户在站点上刷新页面或执行一些ajax请求时,需要执行此函数

我知道使用codeigniter有一种使用钩子的方法

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

在laravel中是如何做到这一点的?

您可以使用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的过滤器来实现这一点。路由过滤器已被弃用,优先使用中间件,并在2015年12月laravel 5.2发布时被完全删除。@我的laravel项目版本是4.2。您为什么将其标记为laravel 5?在Laravel4.2中,必须使用过滤器。