我在控制器之外有一个常规的php类,所以它不会从容器的自动注入中受益。我需要从该类访问响应对象,我想我应该从容器中获取它。 访问它的正确方法是什么?只是将它作为参数传递,以便外部类可以使用它?还有更好的方法吗?
答案 0 :(得分:0)
你需要使用中间件,因为响应对象是不可变的,因此“更改”它不会更新slim将使用的响应。
$app->add(function($request, $response, $next) {
if($shouldRedirect === true) {
return $response->withRedirect('myurl'); // do not execute next middleware/route and redirect
}
return $next($request, $response); // execute next middleware/ the route
});
有关中间件have a look at this的详细信息。
答案 1 :(得分:0)
如果您需要发送子请求,请修改provides such functionality。但是使用它carefully,因为在某些情况下它的结果并不明显。
<?php
class MySortOfOutsideClass
{
/**
* If you need to send a subrequest, you have to access application instance,
* so let's inject it here.
*/
public function __construct(\Slim\App $app)
{
$this->$app = $app;
}
/**
* Method that makes a subrequest, and returns the result of it.
*/
public function myMethod()
{
if ($subRequestIsRequired) {
return $this->app->subRequest('GET', '/hello');
}
}
}