Drupal 8 custom autocomplete error 500 -
can me wrong did? server returns internal server error 500. looks not able controller. can explain me mistake? think in routing autocomplete path not sure. if how can fix it? thank much, guys
my form autocomplete form element:
$form['field_father'] = array( '#title' => t('father'), '#type' => 'textfield', '#autocomplete_route_name' => 'cows.autocomplete', '#autocomplete_route_parameters' => array(), ); the module routing file:
cows.form: path: '/cows/add' defaults: _title: 'add cow' _form: '\drupal\cows\form\cowsform' requirements: _permission: 'access content' cows.autocomplete: path: '/cows/autocomplete' defaults: _controller: '\drupal\cows\controller\cowscontroller::autocomplete' requirements: _permission: 'access content' the controller code:
namespace drupal\cows\controller; use drupal\core\controller\controllerbase; use symfony\component\httpfoundation\jsonresponse; class cowscontroller extends controllerbase { public function autocomplete(request $request) { $matches = []; $string = $request->query->get('q'); $query = \drupal::database()->select('node__field_name', 'fn'); $query->fields('fn', ['field_name_value', 'entity_id']); $query->addfield('fg', 'field_gender_value'); $query->join('node__field_gender', 'fg', 'fg.entity_id = fn.entity_id '); $query->condition('fn.field_name_value', '%' . $string . '%', 'like'); $query->condition('fg.field_gender_value', array('bull','ox'), 'in'); $result = $query->execute(); foreach ($result $row) { $matches[] = ['value' => $row->entity_id, 'label' => $row->field_name_value]; } return new jsonresponse($matches); } } thank much
use namespace support request $request.
namespace drupal\cows\controller; use drupal\core\controller\controllerbase; use symfony\component\httpfoundation\jsonresponse; /****this newly added****/ use symfony\component\httpfoundation\request; class cowscontroller extends controllerbase { public function autocomplete(request $request) { $matches = []; $string = $request->query->get('q'); $query = \drupal::database()->select('node__field_name', 'fn'); $query->fields('fn', ['field_name_value', 'entity_id']); $query->addfield('fg', 'field_gender_value'); $query->join('node__field_gender', 'fg', 'fg.entity_id = fn.entity_id '); $query->condition('fn.field_name_value', '%' . $string . '%', 'like'); $query->condition('fg.field_gender_value', array('bull','ox'), 'in'); $result = $query->execute(); foreach ($result $row) { $matches[] = ['value' => $row->entity_id, 'label' => $row->field_name_value]; } return new jsonresponse($matches); } }
Comments
Post a Comment