eloquent - 使用 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 上访问的用户信息。
解决方案
你弄错了中间件,它需要是一个路由中间件并且直接绑定到路由或路由组,而不是 $app->add
推荐阅读
- java - 如何在android java中显示图像集?
- c# - 如何从 SQL 查询中获取消息到 C# 中的富文本框中
- java - java中月份两个日期之间的差异
- javascript - 将区块链块存储在数组中不是效率低下吗?(Node.js)
- c++ - Implementing/replacement of volatile std::string
- php - php strtotime 中遇到的格式不正确的数值
- apache-spark - 运行 Apache Spark 时出错
- python - Python 不能连接 'str' 和 'datetime.timedelta' 对象
- c# - System.Device.Location.Portable 1.0.0 包可能与您的项目不完全兼容
- validation - 训练准确性提高但验证准确性保持不变