有道我有一個控制器之外的常規PHP類,所以它不會從容器的自動注射受益。我需要訪問該類的響應對象,我想我應該從容器中獲取它。 訪問它的正確方法是什麼?只是將它作爲參數傳遞給外部類可以使用它?有沒有更好的辦法 ?從類訪問容器不纖薄控制器
回答
如果您需要發送子請求,Slim 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');
}
}
}
您需要使用中間件,因爲響應對象是不可變的,因此「更改」它不會更新將被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的更多信息。
謝謝,將調查這一點。請快速提問:是否可以從「外部」文件(不在控制器內部)觸發細長路由進程(會觸發中間件)? –
@RobertBrax我不明白,你觸發與'$ APP-> run()的執行;' – jmattheis
是,應用程序運行良好,但我想觸發從一個類文件,是不是在控制器中的請求過程。想象一下,我有一個文件「authRequired.php」文件,它不在控制器中,但仍然必須能夠從內部進行重定向。 –
- 1. 在Symfony控制器中訪問容器
- 2. 從控制器類訪問視圖
- 3. 訪問從控制器
- 4. 從控制器訪問stylesheet_link_tag
- 5. 訪問從控制器
- 6. 超薄支付控制器
- 7. 不能訪問控制器
- 8. Symfony 3:無法從控制器內部訪問容器
- 9. 訪問控制器
- 10. Ember從另一個控制器訪問陣列控制器的內容
- 11. Ember.js從另一個控制器訪問控制器模型
- 12. 如何從子控制器訪問父成員控制器
- 13. JavaFX 2.2 -fx:include - 如何從子控制器訪問父控制器
- 14. 如何從瀏覽器控制檯訪問組件控制器?
- 15. Ember _如何從組件控制器訪問控制器動作
- 16. 從角度訪問子控制器的控制器範圍
- 17. 從子控制器訪問路由提供者控制器
- 18. 從另一個控制器訪問控制器中的變量
- 19. 訪問來自不同的控制器ExtJS的控制器6
- 20. 訪問源容器從接收容器
- 21. 從控制器移動代碼到模型(薄控制器胖模型)
- 22. 可訪問Bluemix容器註冊表進行訪問控制?
- 23. 從控制器訪問lang變量+ codeigniter
- 24. 如何從控制器訪問?
- 25. Spring 3 MVC從控制器訪問HttpRequest
- 26. 訪問控制器從$ 279。在AngularJS
- 27. 從控制器訪問服務層
- 28. C#訪問方法從控制器
- 29. 從控制器訪問組件
- 30. 從部分頭部訪問控制器
爲什麼你需要響應對象 – jmattheis
做一個重定向 –