public function index(Application $app, Request $request, $entity = null)
{
$data = array();
$builder = $app['form.factory']->createBuilder('admin_system_masterdata');
$event = new EventArgs(array('builder' => $builder), $request);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_INDEX_INITIALIZE, $event);
$form = $builder->getForm();
if ('POST' === $request->getMethod()) {
$form->handleRequest($request);
if ($form->isValid()) {
$event = new EventArgs(array('form' => $form), $request);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_INDEX_COMPLETE, $event);
if ($event->hasResponse()) {
return $event->getResponse();
}
return $app->redirect($app->url('admin_setting_system_masterdata_view', array('entity' => $form['masterdata']->getData())));
}
} elseif (!is_null($entity)) {
$form->submit(array('masterdata' => $entity));
if ($form['masterdata']->isValid()) {
$entityName = str_replace('-', '\\', $entity);
try {
$masterdata = $app['orm.em']->getRepository($entityName)->findBy(array(), array('rank' => 'ASC'));
$data['data'] = array();
$data['masterdata_name'] = $entity;
foreach ($masterdata as $value) {
$data['data'][$value['id']]['id'] = $value['id'];
$data['data'][$value['id']]['name'] = $value['name'];
}
$data['data'][] = array('id' => '', 'name' => '');
} catch (MappingException $e) {
}
}
}
$builder2 = $app['form.factory']->createBuilder('admin_system_masterdata_edit', $data);
$event = new EventArgs(array('builder' => $builder2), $request);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_SETTING_SYSTEM_MASTERDATA_INDEX_FORM2_INITIALIZE, $event);
$form2 = $builder2->getForm();
return $app->render('Setting/System/masterdata.twig', array('form' => $form->createView(), 'form2' => $form2->createView()));
}