이 방법으로 요청 객체에 직접 액세스하는 것에 대한 경고가 있습니다 \Drupal::request
.
* Note: The use of this wrapper in particular is especially discouraged. Most
* code should not need to access the request directly. Doing so means it
* will only function when handling an HTTP request, and will require special
* modification or wrapping when run from a command line tool, from certain
* queue processors, or from automated tests.
*
* If code must access the request, it is considerably better to register
* an object with the Service Container and give it a setRequest() method
* that is configured to run when the service is created. That way, the
* correct request object can always be provided by the container and the
* service can still be unit tested.
확장되는 모든 폼 컨트롤러 \Drupal\Core\Form\FormBase
에는이 종속성이 자동으로 주입되며 다음을 사용하여 액세스 할 수 있습니다.
$this->getRequest()->getSchemeAndHttpHost()
일반 페이지 컨트롤러 확장 \Drupal\Core\Controller\ControllerBase
은 함수 request_stack
를 재정의 \Drupal\Core\Controller\ControllerBase::create
한 다음 $request
생성자에서 속성 을 설정 하여 서비스를 제공 할 수 있다고 생각합니다 (그러나 테스트하지는 않았습니다) . 이 양식에 대해 정말 잘 설명하고, 동일한 프로세스는 페이지 컨트롤러를 신청해야합니다 https://www.drupal.org/docs/8/api/services-and-dependency-injection/dependency-injection-for-a- 양식 .