【问题标题】: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>

感谢您的帮助

【问题讨论】:

  • 你能告诉我你的管理员课程,我可以帮你吗?:)
  • 你可以在下一个答案中看到我的管理类:)

标签: php symfony bundle sonata


【解决方案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); 
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-06-03
      • 2015-04-02
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 2019-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多