ドメインとその開始日を含むテーブルがあります。ドメインをクリックすると、編集 (更新) のフォームが表示され、そのフィールドに現在の情報が入力されます。私はこれまでこれを作ってきました:
class Domains
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100)
*/
protected $main_domain;
/**
* @ORM\Column(type="date", nullable=true)
*/
protected $start_date;
... 各プロパティのセッターとゲッターを使用します。
フォームを作成するためのクラス EditType を作成します。
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('start_date', 'date', array('widget' => 'single_text', 'format' => 'yyyy-MM-dd'));
}
getName() メソッドを使用すると、EditController に問題が発生します。
class EditController extends Controller
{
/**
* @Route("/fc/edit/{id}")
*/
public function editAction($id, Request $request)
{
$domain = $this->getDoctrine()
->getRepository('AcmeAbcBundle:Domains')
->find($id);
if (!$domain)
{
throw $this->createNotFoundException('No domians found');
}
$form = $this->createForm(new EditType(), $domain);
if($request->getMethod() != 'POST')
{
return $this->render('AcmeAbcBundle:Edit:form.html.twig', array(
'id'=>$id, 'domain'=>$domain, 'form' => $form->createView() ));
}
if ($request->getMethod() == 'POST')
{
$form->bindRequest($request);
print_r($request);
if ($form->isValid())
{
$em = $this->getDoctrine()->getEntityManager();
$domain = $em->getRepository('AcmeAbcBundle:Domains');
if (!$domain)
{
throw $this->createNotFoundException('There is no such domain');
}
$domain->setStartDate($request->getStartDate());
$em->flush();
}
return $this->redirect($this->generateUrl('homepage'));
}
どうあるべきかわかりません:(いくつか試してみましたが、うまくいかなかったようです。
$domain->setStartDate($request->getStartDate());
ここではメソッドが見つかりません。$request->start_date の場合、プロパティが見つかりません...