private function loadCategories() { $collection = $this->repository->matching(new Criteria()); $collection->map(function (CategoryInterface $category) { $this->categories[$category->getId()] = ['name' => $category->translate()->getName(), 'route' => $this->generator->generate($category->translate()->getRoute()->getId())]; }); }
/** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $form = $builder->init($options); $form->addChild($builder->getElement('tree', ['name' => 'categories', 'label' => $this->trans('Categories'), 'add_item_prompt' => $this->trans('Category name'), 'addLabel' => $this->trans('Add category'), 'sortable' => true, 'selectable' => false, 'clickable' => true, 'deletable' => true, 'addable' => true, 'prevent_duplicates' => true, 'items' => $this->repository->getTreeItems(), 'onClick' => 'openCategoryEditor', 'onDuplicate' => 'duplicateCategory', 'onSaveOrder' => 'changeOrder', 'onAdd' => 'addCategory', 'onAfterAdd' => 'openCategoryEditor', 'onDelete' => 'deleteCategory', 'onAfterDelete' => 'openCategoryEditor', 'active' => (int) $this->getRequest()->attributes->get('id')])); return $form; }
public function sortAction(Request $request) { $items = $request->request->get('items'); $this->repository->changeOrder($items); return new JsonResponse(['success' => true]); }