1. Go to this page and download the library: Download backsystem/autocomplete library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
backsystem / autocomplete example snippets
namespace App\Api;
use App\Entity\Member;
use App\Repository\MemberRepository;
use BackSystem\Autocomplete\AbstractApi;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\QueryBuilder;
/**
* @template-extends AbstractApi<User>
*/
class UserApi extends AbstractApi {
public function getEntityClass(): string {
return User::class;
}
public function getUrl(): string {
return '/users';
}
public function createFilteredQueryBuilder(EntityRepository $repository, string $query): QueryBuilder {
return $repository->createQueryBuilder('user')
->andWhere('CONCAT(user.id, user.firstName, user.lastName, user.firstName, user.email) LIKE :search')
->setParameter('search', '%' . str_replace(' ', '', $query) . '%');
}
public function isValid(EntityRepository $repository, mixed $id): ?object {
return $repository->createQueryBuilder('user')
->andWhere('user.id = :id')
->setParameter('id', $id)
->getQuery()
->getOneOrNullResult();
}
public function getValue($entity): string {
return (string) $entity->getId();
}
public function getLabel($entity): string {
return sprintf('<b>%s</b><span> - </span><i>%s</i><br><small>%s</small>', str_pad($entity->getId(), 5, '0', STR_PAD_LEFT), $entity->getFullName(), $entity->getEmail());
}
public function getTitle($entity): string {
return $entity->getFullName(); // Optional method, try with and without! :)
}
}
namespace App\Form;
use App\Api\UserApi;
use App\Entity\Post;
use BackSystem\Autocomplete\Type\AutocompleteType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class PostType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options): void {
$builder->add('title', TextType::class, [
'label' => 'Amazing title',
])->add('user', AutocompleteType::class, [
'class' => UserApi::class,
'placeholder' => 'Choose an user',
]);
}
public function configureOptions(OptionsResolver $resolver): void {
$resolver->setDefaults([
'data_class' => Post::class,
]);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.