Hola usuario de nuestro sitio, encontramos la solución a lo que estabas buscando, deslízate y la verás más abajo.
Solución:
Si desea seleccionar una entidad, hay una manera mucho más fácil de hacerlo. Drupal 8 tiene un tipo de campo de entidad_autocompletado estándar, solo especifique su elemento de formulario de esta manera:
$form['node'] = [
'#type' => 'entity_autocomplete',
'#target_type' => 'node',
];
Consulte Campo de autocompletado personalizado para obtener más información.
Además, nunca realice consultas de bases de datos en tablas de nodos/entidades. Usa Drupal::entityQuery() para eso.
Su clase necesita alguna modificación, necesita verificar la solicitud y ponerla en $string.
query->get('q');
if ($string)
$matches = array();
$query = Drupal::entityQuery('node')
->condition('status', 1)
->condition('title', '%'.db_like($string).'%', 'LIKE');
//->condition('field_tags.entity.name', 'node_access');
$nids = $query->execute();
$result = entity_load_multiple('node', $nids);
foreach ($result as $row)
//$matches[$row->nid->value] = $row->title->value;
$matches[] = ['value' => $row->nid->value, 'label' => $row->title->value];
return new JsonResponse($matches);
- Cree un archivo routing.yml y agregue el siguiente código: admin_example.autocomplete:
:
path: '/admin_example/autocomplete'
defaults:
_controller: 'Drupaladmin_exampleControllerAdminNotesController::autocomplete'
requirements:
_permission: 'access content'
- El formulario que ha creado en mymodule/src/Form/EditForm.php es correcto
Debe cambiar el código en el controlador. El código está a continuación:
public function autocomplete(Request $request)
$string = $request->query->get('q');
$matches = array();
$query = db_select('node_field_data', 'n')
->fields('n', array('title', 'nid'))
->condition('title', $string . '%', 'LIKE')
->execute()
->fetchAll();
foreach ($query as $row)
$matches[] = array('value' => $row->nid, 'label' => $row->title);
return new JsonResponse($matches);
Te mostramos comentarios y calificaciones
Si conservas alguna suspicacia y capacidad de renovar nuestro ensayo eres capaz de ejecutar una reseña y con deseo lo leeremos.