您好我在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的做法是什么?
答案 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
}
}