Я использую DoctrineBehaviors, чтобы применить перевод моей сущности, и JordiLlonchCrudGenerator для генерации моей crud, и LexikFormFilterBundle для создания типа фильтров форм.Symfony2 DoctrineBehaviors, JordiLlonchCrudGeneratorBundle, LexikFormFilterBundle issue
Моя форма Тип
class PageFilterType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', 'filter_text')
->add('content', 'filter_text')
;
$listener = function(FormEvent $event)
{
// Is data empty?
foreach ($event->getData() as $data) {
if(is_array($data)) {
foreach ($data as $subData) {
if(!empty($subData)) return;
}
}
else {
if(!empty($data)) return;
}
}
$event->getForm()->addError(new FormError('Filter empty'));
};
$builder->addEventListener(FormEvents::POST_BIND, $listener);
}
Когда я пытаюсь фильтров мои сущностей, сказал ошибка шляпка не поле, называемое название в классе Entity \ Page. Я понимаю эту проблему, но я понятия не имею, как разрешить эту ошибку, потому что название поля в сущности PageTranslation, здесь мои функциональные фильтры:
protected function filter()
{
$request = $this->getRequest();
$session = $request->getSession();
$filterForm = $this->createForm(new PageFilterType());
$em = $this->getDoctrine()->getManager();
$queryBuilder = $em->getRepository('PageBundle:Page')
->createQueryBuilder('e')
->select('e')
->where('e.deletedAt IS NULL')
;
// Reset filter
if ($request->get('filter_action') == 'reset') {
$session->remove('PageControllerFilter');
}
// Filter action
if ($request->get('filter_action') == 'filter') {
// Bind values from the request
$filterForm->bind($request);
if ($filterForm->isValid()) {
// Build the query from the given form object
$this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($filterForm, $queryBuilder);
// Save filter to session
$filterData = $filterForm->getData();
$session->set('PageControllerFilter', $filterData);
}
} else {
// Get filter from session
if ($session->has('PageControllerFilter')) {
$filterData = $session->get('PageControllerFilter');
$filterForm = $this->createForm(new PageFilterType(), $filterData);
$this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($filterForm, $queryBuilder);
}
}
return array($filterForm, $queryBuilder);
}
Я думаю, что я должен настроить эта линия, но я не знаю, как
$queryBuilder = $em->getRepository('PageBundle:Page')
->createQueryBuilder('e')
->select('e')
->where('e.deletedAt IS NULL')
;
Любое решение для этого?
Кроме того, я создал мусор для каждого объекта, для Exemple, если одна страница будет удалена, пользователь может найти его на помойку,
Exemple: http://snapplr.com/snap/xxmk
Так я не имею никаких проблем с действием ReStore все, но удалить все не функционален
Это мое действие
public function emptyTrashAction(){
$em = $this->getDoctrine()->getEntityManager();
$entities=$em->getRepository('PageBundle:Page')->findByRemoved();
if($entities){
foreach ($entities as $entity) {
$em->remove($entity);
$em->flush();
}
$this->get('session')->getFlashBag()->add('success', 'La corbeille est vide !!');
return $this->redirect($this->generateUrl('pa_trash'));
}else{
$this->get('session')->getFlashBag()->add('error', 'La corbeille est déjà vide !! ');
return $this->redirect($this->generateUrl('pa'));
}
}
Что я хочу сделать, это удалить все объекты, где feild DeletedAt не пуст, как я могу это сделать?
Благодаря //
Не могли бы вы опубликовать свой класс сущности? Я думаю, что сначала вы забыли поместить поле заголовка внутри, в php-классе, если аннотация или в файл yml или xml, вы должны сначала проверить эти файлы. –