嗨,我正在 Laravel 做一个网站。我试图做一个需要在任何控制器之前执行的函数。
示例: 我有类似的功能
function xyz(){
//do code here
}
Run Code Online (Sandbox Code Playgroud)
此功能需要在用户通过刷新页面或执行一些 ajax 请求来访问站点时执行。
我知道使用 codeigniter 有一种方法可以使用钩子来做到这一点
$hook['pre_controller'] = array(
'class' => 'MyClass',
'function' => 'Myfunction',
'filename' => 'Myclass.php',
'filepath' => 'hooks',
'params' => array('beer', 'wine', 'snacks')
);
Run Code Online (Sandbox Code Playgroud)
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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5696 次 |
| 最近记录: |