Я пытаюсь создать строку поиска, но моя форма не возвращает значение. Я начинаю, я уже сделал symfony формы, но там я действительно не вижу: (
Я использую Symfony 4.12.10. У меня всегда есть результат в symfony profiler:
App \ Entity \ PropertySearch {# 707 ▼ -поиск: ноль}
html:
<form class="form-inline mr-auto">
{{ form_start(searchForm) }}
{{ form_errors(searchForm) }}
{{ form_row(searchForm.searchbar) }}
<button type="submit" class="btn btn-secondary my-4 ml-1 my-sm-0">?</button>
{{ form_end((searchForm)) }}
</form>
хранилище:
class TextesRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Textes::class);
}
/**
* @return Query
*/
public function findAllVisible(PropertySearch $search)
{
$query = $this->createQueryBuilder('p');
if ($search->getSearchbar()) { //Si l'utilisateur recherche
$query = $query->andwhere('p.title = :searchbar');
$query->setParameter('searchbar', $search->getSearchbar());
}
return $query->getQuery()->getResult();
}
форма:
class SearchType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('searchbar', TextType::class, [
'label' => false,
'required' => false,
'attr' => [
'placeholder' => 'recherche...',
'style' => 'width: 50vw',
],]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => PropertySearch::class,
'csrf_protection' => false,
]);
}
}
сущность для формы:
class PropertySearch{
private $searchbar;
/**
* @return mixed
*/
public function getSearchbar()
{
return $this->searchbar;
}
/**
* @param mixed $searchbar
* @return PropertySearch
*/
public function setSearchbar($searchbar)
{
$this->searchbar = $searchbar;
return $this;
}
}
контроллер:
class TextController extends AbstractController
{
/**
* @Route("/liste", name="list")
*/
public function index(TextesRepository $repo, Request $request)
{
$search = new PropertySearch();
$searchform=$this->createForm(SearchType::class, $search);
$searchform->handleRequest($request);
return $this->render('text/index.html.twig', [
'controller_name' => 'TextController.php',
'articles' => $repo->findAllVisible($search),
'searchForm' => $searchform->createView()
]);
}