1

I am getting the following error:

Warning: Missing argument 1 for Drupal\custom_forms\Service\CustomFormsService::__construct(), called in /drupal/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php on line 264 and defined in Drupal\custom_forms\Service\CustomFormsService->__construct() (line 13 of modules/custom_forms/src/Service/CustomFormsService.php).

And my code (service.php) is:

public function __construct($request) {
$this->cityname = \Drupal::request()->get('cityname');

if($this->cityname != ''){
  $result = \Drupal::database()->select('city_municipality','cm')
    ->fields('cm',array('municipality'))
    ->condition('city', $this->cityname)
    ->execute()->fetchAll();
    $result = json_encode($result);
    print $result; 
    exit;
 }

custom_forms_services.yml

  services:
       custom_forms.custom_forms_service:
           class: Drupal\custom_forms\Service\CustomFormsService

But the form functionalities are working fine.

Can anyone help me out on this?

2
  • Is this a service class or a form class? If it's a service class, what does your custom_forms.services.yml file look like? If it's a form class, do you have a function named create() in the class? If so, please show it.
    – Jaypan
    Feb 7, 2017 at 11:59
  • custom_forms.services.yml services: custom_forms.custom_forms_service: class: Drupal\custom_forms\Service\CustomFormsService
    – ancy
    Feb 7, 2017 at 12:01

1 Answer 1

2

You need to add an argument to your services.yml for the class to be injected:

services:
  custom_forms.custom_forms_service:
    class: Drupal\custom_forms\Service\CustomFormsService
    arguments:
      - @request_stack

Note that you should make a few changes to your service as well:

First, add an type hint for the argument:

public function __construct(\Symfony\Component\HttpFoundation\RequestStack $requestStack) {

Next, you will use the $requestStack instead of Drupal::request():

$this->cityname = $requestStack->getCurrentRequest()->query->get('cityname');
6
  • I am getting the following error :Recoverable fatal error: Argument 1 passed to Drupal\custom_forms\Service\CustomFormsService::__construct() must be an instance of Symfony\Component\HttpFoundation\RequestStack, none given, called in /drupal/docroot/core/lib/Drupal/Component/DependencyInjection/Container.php on line 264 and defined in Drupal\custom_forms\Service\CustomFormsService->__construct() (line 14 of modules/custom_forms/src/Service/CustomFormsService.php).
    – ancy
    Feb 7, 2017 at 12:19
  • You need to clear your cache.
    – Jaypan
    Feb 7, 2017 at 12:22
  • I am getting the following error while clearing my cache..Fatal error: Call to undefined method Symfony\Component\HttpFoundation\RequestStack::get() in /drupal/docroot/modules/custom_forms/src/Service/CustomFormsService.php on line 16
    – ancy
    Feb 7, 2017 at 12:28
  • Sorry, I think I had an error. I've updated the code. I should probably test before posting!
    – Jaypan
    Feb 7, 2017 at 12:33
  • 1
    That has nothing to do with the current topic. So please mark this one as solved, and open a new topic for that error.
    – Jaypan
    Feb 7, 2017 at 12:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.