首页 > 解决方案 > 使用 Slim 框架在 Eloquent 中访问 $app 或 $request

问题描述

我正在用 Eloquent 构建一个 Slim Framework 4 Api 应用程序。

公共/index.php

$capsule = new \Illuminate\Database\Capsule\Manager;
$capsule->addConnection($dbconfig);
$capsule->setAsGlobal();
$capsule->bootEloquent();

$app->add(new RequestUser()); // for calling middleware that adds user

中间件

 class RequestUser
  {

public function __invoke(Request $request, RequestHandler $handler): Response
{
     ....................
    $user = User::where('emailid', $email)->first();
    $request = $request->withAttribute('user', $user);
    $request = $request->withAttribute('token', (string) $exploded_authorization[1]);
    return $handler->handle($request);
  }
  }

控制器

use Psr\Http\Message\ServerRequestInterface as Request;

public function create(Request $request, Response $response, $args)
    {
$user = $request->getAttribute('user'); // gives me the request user information

    }

模型

<?php

namespace App\Models\TableModel;

use Illuminate\Database\Eloquent\Model;
use DateTime;
use Psr\Http\Message\ServerRequestInterface as Request;


class Details extends Model
{
    protected $table = 'my_table';

    protected $primaryKey = 'Id';

    public $timestamps = false;

    protected $fillable = [];

    protected $hidden = [];

    protected $casts = [

    ];

    protected $appends = ['can_edit', 'can_delete'];


    public function getCanEditAttribute(){
        $now = date('Y-m-d H:i:s');
        return $this->Start_Date >= $now;
    }

    public function getCanDeleteAttribute(){
        //request contains the user information from the middleware? How to access here
        return 
    }


}

我想在我的模型中访问 $request,以便我可以获取试图在 CanDelete 上访问的用户信息。

标签: eloquentslim-4

解决方案


你弄错了中间件,它需要是一个路由中间件并且直接绑定到路由或路由组,而不是 $app->add


推荐阅读