编辑对象奏鸣曲管理包

Posted

技术标签:

【中文标题】编辑对象奏鸣曲管理包【英文标题】:Edit Object Sonata admin bundle 【发布时间】:2018-08-11 06:27:48 【问题描述】:

我想编辑包含在 Parametre 对象(OneToOne 关联)中的子对象 Pourcentage,但是当我单击编辑时,它会将我重定向到 Parametre 的版本而不是 Pourcentage

我想在我的自定义模板中执行此操作:

<a href=" admin.generateObjectUrl('edit', parametre.pourcentage) " class="btn btn-sm btn-default edit_link" title=" 'action_edit'|trans(, 'SonataAdminBundle') ">
                        <i class="fa fa-pencil" aria-hidden="true"></i>
                         'action_edit'|trans(, 'SonataAdminBundle') 
                    </a>

感谢您的帮助

【问题讨论】:

你能告诉我你的管理员课程,我可以帮你吗?:) 你可以在下一个答案中看到我的管理类:) 【参考方案1】:
class ParametreAdmin extends AbstractAdmin

    protected $baseRoutePattern = 'parametre';

    protected function configureFormFields(FormMapper $formMapper)
    
      $formMapper
            ->add("pourcentage", "sonata_type_admin") 
            ->add("mise", "sonata_type_admin");

      $this->preUpdate($formMapper);
    

    public function preUpdate($object)
    
        $entityCreate = $this->getSubject();   
        $user = $this->getConfigurationPool()->getContainer()->get('security.token_storage')->getToken()->getUser();
        $entityCreate->setUser($user); 
    



class PourcentageAdmin extends AbstractAdmin

    protected $baseRoutePattern = 'pourcentage';

    protected function configureFormFields(FormMapper $formMapper)
    
       $formMapper
            ->add("pourcentageMise", 'text');
      

【讨论】:

【参考方案2】:

首先,您不需要从 configureFormFields 调用 preUpdate,因为 preUpdate 会在更新之前调用! 1.我不确定我是否理解您单击编辑等的位置,如果这不适合您,请给我更多信息! 2.如果你想在更新前设置用户并持久化,你可以这样做:

    class ParametreAdmin extends AbstractAdmin


protected $baseRoutePattern = 'parametre';

protected function configureFormFields(FormMapper $formMapper)


  $formMapper
        ->add("pourcentage", "sonata_type_admin") 
        ->add("mise", "sonata_type_admin");
   ;




 protected function configureListFields(ListMapper $list) 
  ..........................
    $list->add('_action', null, array(
        'actions' => array(
            'custom_show' => array('template' => 'YOURBundle:PATH:TEMPLATE_NAME.html.twig')
        )
    ));



protected function getUser()
  return $this->getConfigurationPool()->getContainer()->get('security.token_storage')->getToken()->getUser();


public function prePersist($object)

    $user = $this->getUser;
    $object->setUser($user); 


 public function preUpdate($object)

    $user = $this->getUser;
    $object->setUser($user); 


【讨论】:

以上是关于编辑对象奏鸣曲管理包的主要内容,如果未能解决你的问题,请参考以下文章

奏鸣曲管理包中的内联可编辑 OneToOne 关系

Sonata 管理员搜索功能:尚未设置请求对象

编辑奏鸣曲用户数据

配置文件编辑时奏鸣曲用户捆绑错误

阻止 SonataAdmin / Symfony2 使用 sonata_type_admin 嵌入式管理员创建空对象

奏鸣曲管理员列表可编辑与编辑/显示冲突