私は初心者です。昨日私はsymfonyのツールを生成するようにテストしました:doctrine:crud。私は多くのことを私が今よりはるかに簡単に行うことができます。場合は、私が見つけた、生成されたコード分析した後です:createFormにTaskTypeが必要なのはなぜですか?
$editForm = $this->createForm('AppBundle\Form\TaskType', $task);
を私は、公式ドキュメントといくつかのチュートリアルを読んでいくつかの時間を費やすが、私は私の疑問のために正確な答えを見つけることができません。 この部分が必要な理由:AppBundle\Form\TaskType
? 何が含まれるべきですか?フォームを構築するTaskTypeファイルに移動することができます。
$builder->add('name')->add('datetime');
しかし、それだけのために分離されたファイルを作成する必要はありません。 TaskTypeファイルの使用を避ける方法はありますか?私はこのようにタスクエンティティの編集フォームを実行しようとしました:
$editForm = $this->createForm($task);
しかし、それは間違った方法です。 よろしく、 ルカシュ
EDIT#1 -----タスクエンティティ用のコントローラeditAction
/**
* Displays a form to edit an existing task entity.
*
* @Route("/{id}/edit", name="task_edit")
* @Method({"GET", "POST"})
*/
public function editAction(Request $request, Task $task)
{
$deleteForm = $this->createDeleteForm($task);
$editForm = $this->createForm('AppBundle\Form\TaskType', $task);
$editForm->handleRequest($request);
if ($editForm->isSubmitted() && $editForm->isValid()) {
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('task_edit', array('id' => $task->getId()));
}
return $this->render('task/edit.html.twig', array(
'task' => $task,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
));
}
とTaskType属性
class TaskType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name')->add('datetime');
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Task'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'appbundle_task';
}
}
ポストCRUDを生成するときに、フォームと完全なコントローラを作成の内容は、私はあなたよりも、同じバージョンを使用していませんでしたし、私の場合は私が持っていましたアクションごとにフォームメソッドを作成 – albert
コードが追加されました。バージョン3.3.10 – Lukaszy
Symfonyへようこそ。最善の策は、ドキュメントの[フォームの例](https://symfony.com/doc/current/forms.html)のいくつかを使って作業することです。ドキュメントのバージョン番号(右上の角)がSymfonyのバージョンと一致することを確認してください。一度フォームの基本的な理解を持っていれば、荒れ果てたものがより意味をなさないでしょう。 – Cerad