でカスタムリポジトリメソッドを使用しますデフォルト値を返します。これはメソッドです:のSymfony 3.1は、私は実体を持っている形
public function getUserSettings($user_id)
{
$user_preferences = $this->findOneBy(array('id' => $user_id));
if($user_preferences){
return array(
'user_preferences' => array(
'background_color' => $user_preferences->getBackgroundColor(),
'text_color' => $user_preferences->getTextColor()
)
);
}else{
return array(
'user_preferences' => array(
'background_color' => '#000000',
'text_color' => '#FFFFFF'
)
);
}
}
私はuserSettingsTypeを持っている:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('background_color', TextType::class)
->add('text_color', TextType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\UserSettings',
));
}
とコントローラ:
public function usersettingsAction(Request $request)
{
$user = $this->get('security.token_storage')->getToken()->getUser();
$data = $request->request->all();
$user_settings = new UserSettings();
$form = $this->createForm(UserSettingsType::class, $user_settings);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($user_settings);
$em->flush();
}
return $this->render('user/user_settings.html.twig', $user_settings);
}
質問です:どのように私は(リポジトリメソッドのgetUserSettingsを使用することができます)に初めてフォームフィールドをロードするか?
私が見つけた投稿/回答/チュートリアル/クックブックは、この状況を解決するために役立たなかった。
これが唯一の方法ですか?私は私が持っているそれぞれのフォームのためのサービスを定義するのが好きではありません。コントローラーだけで仕事をする方法はありますか? – Carlos
いいえ、コントローラでフォームを構築しても同じことができると思いますが、上記で説明した方法は最もクリーンな方法です。ロジックを簡単に分離できます。 – DOZ