我正在使用 EasyAdmin 為一個物體(Processes)創建一個控制器,該控制器與另一個物體(Sections)(一對多關系)相關,該物體與另一個物體(Sub-Sections)有關系(也是一個-對多)。
在流程的“新”形式中,我有一個 EasyAdmin Collection 型別的欄位來添加部分,但由于這些部分有小節,我需要在 Sections 中為小節添加另一個相等的欄位......具有相同的行為小節。EasyAdmin Collection 型別的欄位(單擊“添加專案”時,會顯示該其他物體的迷你表單)。
主要表單用于創建流程,“部分”欄位用于向該流程添加部分,在部分內,我需要另一個按鈕,例如 EasyAdmin 中的按鈕,以便為該部分創建更多子部分。
這是行程的主要形式:

這就是 Collection 型別欄位與創建 Sections 的欄位的樣子:

這是流程控制器:(我為名為“ SeccionType ”的部分創建了一個自定義欄位)
namespace App\Controller\Admin;
use App\Entity\Proceso;
use App\Form\Type\SeccionType;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField;
class ProcesoCrudController extends AbstractCrudController
{
public static function getEntityFqcn(): string
{
return Proceso::class;
}
public function configureFields(string $pageName): iterable
{
yield TextField::new('nombre');
yield TextEditorField::new('descripcion');
yield CollectionField::new('secciones') // <--- This is Sections field with the custom Symfony formType
->setEntryType(SeccionType::class)
->setFormTypeOptions(['block_prefix' => 'secciones_form',])
->addCssClass('actividadesFld');
yield BooleanField::new('estado')->renderAsSwitch(false);
}
}
這是自定義欄位SeccionType的類
namespace App\Form\Type;
use App\Entity\Seccion;
use App\Entity\Proceso;
use App\Entity\Subseccion;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\FormTypeInterface;
use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField;
use Symfony\Component\Validator\Constraints\NotNull;
class SeccionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('name')
->add('description')
->add('order')
->add('tag')
// ->add('proccess')
->add('subSection', CollectionType::class, ['entry_type' => ..?]);
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Seccion::class,
]);
}
}
任何幫助或建議,我將不勝感激
uj5u.com熱心網友回復:
似乎您沒有在 SeccionType.php 中的 CollectionType 以及原型=> true 中添加allow-add => true 選項。您還應該創建一個 SubSeccionType 以提供entry-type選項。這應該是一個好的開始。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471466.html
標籤:php 交响乐 symfony 形式 易管理 易管理员3
