2017-09-07 16 views
1

두 명의 관리자, UserAdmin 및 CarAdmin이 있습니다. UserAdmin의 목록보기에서 CarAdmin 으로 리디렉션되는 사용자 지정 작업을 만들고 싶습니다. 사용자가 이미 선택된보기를 만듭니다.소나타 관리 번들 : 새로 만들기를 위해 사용자를 이미 선택하도록 할 수 있습니까?

지금까지 컨트롤러로 사용자 지정 작업을 만들었습니다. 내 문제는 데이터 지속성을위한 일부 매개 변수를 전달하는 CarAdmin 만들기/새 양식으로 리디렉션하는 것입니다.

모든 참조 점을 높이 평가할 것입니다. 감사합니다.

답변

0

소나타 관리자는 이러한 작업을 매우 쉽게 해결할 수 있으며 사용자 지정 작업을 수행 할 필요가 없습니다. 해결책의 하나가 될 수있다 :

  • 은 UserAdmin 목록보기에서 하나 개의 컬럼에 대한 custom template을 정의 거기에 특별한 버튼 (링크)를 렌더링합니다. 링크는 일부 get 매개 변수를 사용하여 CarAdmin create action으로 연결되어야합니다.
  • getNewInstance() 메소드의 CarAdmin에서 해당 ID를 사용하여 특수 get 매개 변수 집합 사용자가 있는지 확인하십시오. your_template_name.html.twig에서 UserAdmin

    protected function configureListFields(ListMapper $listMapper) 
    { 
        $listMapper 
         ->add('actions', 'string', array(
          'template' => 'your_template_name.html.twig', 
          'mapped' => false, 
          ) 
         ); 
    } 
    

    에서

    :이 단계는 방법의 getFormFields() prePersist() 등

일부 코드 샘플에서 수행 될 수있다

<a href="{{ path('route_of_the_car_admin_create', {user: object.id}) }}">Create Car for this user</a> 

CarAdmin에서

public function getNewInstance() 
{ 
    $car= parent::getNewInstance(); 

    $userId = $this->getRequest()->query->get('user'); 
    if ($userId) { 
     $em = $this->modelManager->getEntityManager(User::class); 
     $user = $em->getRepository(User::class)->find($id); 
     $car->setUser($user); 
    } 
    return $car; 
} 
+0

감사합니다. 정확히 내가 무엇을 찾고 있었는지. – CookieMonster