- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Controller 。我在该 Controller 中有一个表单。我希望从表(状态表)中以下拉形式接收表单中的数据,并在单击创建时将从该状态表接收到的数据发送到另一个表(站点表)。两个表都在同一个数据库中。那么我该如何在 symfony 中做到这一点呢?
Controller
public function createAction(Request $request)
{
$site = new site;
$form = $this->createFormBuilder($site)
->add('site_id', IntegerType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('site_type', IntegerType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('company', IntegerType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('main_company', IntegerType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('site_name', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('unit_no', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('street_no', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('street', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('suburb', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('state', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('post_code', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('contact_no', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('fax', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('access_notes', TextareaType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('e_mail', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('web', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('contact_person_1', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('contract_starting_date', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('contract_end_date', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('contract_special_note', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('site_specification', TextareaType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('other_comments', TextareaType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('added_by', IntegerType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('hours_per_month', IntegerType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('cleaners_per_session', IntegerType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('auto_sign_out', IntegerType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('time_zone', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('location_path', TextareaType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('lat', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('lng', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('service_price', NumberType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('earliest_start', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('access_duration', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('time_span', TextType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('cost_rates_json', TextareaType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
->add('site_status', IntegerType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
// ->add('date_time', DateTimeType::class, ['attr' => ['style' => 'margin-bottom: 15px;display: flex']])
->add('save', SubmitType::class, array('label' => "Create",'attr' => array('class' => 'btn btn-success', 'style' => 'margin-bottom:15px')))
->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid())
{
//Get Data
$site_id = $form['site_id']->getData();
$site_type = $form['site_type']->getData();
$category = $form['category']->getData();
$company = $form['company']->getData();
$main_company = $form['main_company']->getData();
$site_name = $form['site_name']->getData();
$unit_no = $form['unit_no']->getData();
$street_no = $form['street_no']->getData();
$street = $form['street']->getData();
$suburb = $form['suburb']->getData();
$state = $form['state']->getData();
$post_code = $form['post_code']->getData();
$contact_no = $form['contact_no']->getData();
$fax = $form['fax']->getData();
$access_notes = $form['access_notes']->getData();
$e_mail = $form['e_mail']->getData();
$web = $form['web']->getData();
$contact_person_1 = $form['contact_person_1']->getData();
$contract_starting_date = $form['contract_starting_date']->getData();
$contract_end_date = $form['contract_end_date']->getData();
$contract_special_note = $form['contract_special_note']->getData();
$site_specification = $form['site_specification']->getData();
$other_comments = $form['other_comments']->getData();
$added_by = $form['added_by']->getData();
$hours_per_month = $form['hours_per_month']->getData();
$cleaners_per_session = $form['cleaners_per_session']->getData();
$auto_sign_out = $form['auto_sign_out']->getData();
$time_zone = $form['time_zone']->getData();
$location_path = $form['location_path']->getData();
$lat = $form['lat']->getData();
$lng = $form['lng']->getData();
$service_price = $form['service_price']->getData();
$earliest_start = $form['earliest_start']->getData();
$access_duration = $form['access_duration']->getData();
$time_span = $form['time_span']->getData();
$cost_rates_json = $form['cost_rates_json']->getData();
$site_status = $form['site_status']->getData();
$now = new\DateTime('now');
$site->setSiteId($site_id);
$site->setSiteType($site_type);
$site->setCompany($company);
$site->setMainCompany($main_company);
$site->setSiteName($site_name);
$site->setUnitNo($unit_no);
$site->setStreetNo($street_no);
$site->setStreet($street);
$site->setSuburb($suburb);
$site->setCategory($category);
$site->setState($state);
$site->setPostCode($post_code);
$site->setContactNo($contact_no);
$site->setFax($fax);
$site->setAccessNotes($access_notes);
$site->setEMail($e_mail);
$site->setWeb($web);
$site->setContactPerson1($contact_person_1);
$site->setContractStartingDate($contract_starting_date);
$site->setContractEndDate($contract_end_date);
$site->setContractSpecialNote($contract_special_note);
$site->setSiteSpecification($site_specification);
$site->setOtherComments($other_comments);
$site->setAddedBy($added_by);
$site->setHoursPerMonth($hours_per_month);
$site->setCleanersPerSession($cleaners_per_session);
$site->setAutoSignOut($auto_sign_out);
$site->setTimeZone($time_zone);
$site->setLocationPath($location_path);
$site->setLat($lat);
$site->setLng($lng);
$site->setServicePrice($service_price);
$site->setEarliestStart($earliest_start);
$site->setAccessDuration($access_duration);
$site->setTimeSpan($time_span);
$site->setCostRatesJson($cost_rates_json);
$site->setSiteStatus($site_status);
$site->setDateTime($now);
$em = $this->getDoctrine()->getManager();
$em->persist($site);
$em->flush();
$this->addFlash(
'notice',
'Entry Created'
);
//return new RedirectResponse('http://localhost:8000/loc/');
return $this->redirectToRoute('site_list');
}
return $this->render('sites/create.html.twig', array(
'form' => $form->createView(),
'site' => $site
));
}
最佳答案
您应该首先创建一个 FormType,然后使用 EntityType 作为下拉列表,如下所示:
class MyFormType extends AbstractType{ /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('type', EntityType::class, [ 'label' => 'State', 'class' => YourStateEntity::class ]); } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => YourSiteEntity::class ]); }}
查看“YourStateEntity”和“YourSiteEntity”,并替换为与您的“州”表和“站点”表相对应的您自己的实体。
然后在你的 Controller 中:
public function createAction(Request $request, EntityManagerInterface $entityManager) { $site = new YourSiteEntity(); $form = $this->createForm(MyFormType::class, $site); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $entityManager->persist($site); $entityManager->flush(); return $this->redirectToRoute('site_list'); } return $this->render('sites/create.html.twig', [ 'form' => $form->createView(), 'site' => $site ]); }
这是推荐的方式。将所有字段放入“MyFormType”中,然后让 Symfony 完成它的工作。
请看这里:https://symfony.com/doc/current/forms.html#creating-form-classes
关于php - 如何从symfony3中的同一表单访问2个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974381/
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
PowerShell Web Access 允许您通过 Web 浏览器运行 PowerShell cmdlet。它显示了一个基于 Web 的控制台窗口。 有没有办法运行 cmdlet 而无需在控制台窗
我尝试在无需用户登录的情况下访问 Sharepoint 文件。 我可以通过以下任一方式获取访问 token 方法一: var client = new RestClient("https://logi
我目前正在尝试通过 Chrome 扩展程序访问 Google 服务。我的理解是,对于 JS 应用程序,Google 首选的身份验证机制是 OAuth。我的应用目前已成功通过 OAuth 向服务进行身份
假设我有纯抽象类 IHandler 和派生自它的类: class IHandler { public: virtual int process_input(char input) = 0; };
我有一个带有 ThymeLeaf 和 Dojo 的 Spring 应用程序,这给我带来了问题。当我从我的 HTML 文件中引用 CSS 文件时,它们在 Firebug 中显示为中止。但是,当我通过在地
这个问题已经有答案了: JavaScript property access: dot notation vs. brackets? (17 个回答) 已关闭 6 年前。 为什么这不起作用? func
我想将所有流量重定向到 https,只有 robot.txt 应该可以通过 http 访问。 是否可以为 robot.txt 文件创建异常(exception)? 我的 .htaccess 文件: R
我遇到了 LinkedIn OAuth2: "Unable to verify access token" 中描述的相同问题;但是,那里描述的解决方案并不能解决我的问题。 我能够成功请求访问 toke
问题 我有一个暴露给 *:8080 的 Docker 服务容器. 我无法通过 localhost:8080 访问容器. Chrome /curl无限期挂断。 但是如果我使用任何其他本地IP,我就可以访
我正在使用 Google 的 Oauth 2.0 来获取用户的 access_token,但我不知道如何将它与 imaplib 一起使用来访问收件箱。 最佳答案 下面是带有 oauth 2.0 的 I
我正在做 docker 入门指南:https://docs.docker.com/get-started/part3/#recap-and-cheat-sheet-optional docker-co
我正在尝试使用静态 IP 在 AKS 上创建一个 Web 应用程序,自然找到了一个带有 Nginx ingress controller in Azure's documentation 的解决方案。
这是我在名为 foo.js 的文件中的代码。 console.log('module.exports:', module.exports) console.log('module.id:', modu
我试图理解访问键。我读过https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-se
我正在使用 MGTwitterEngine"将 twitter 集成到我的应用程序中。它在 iOS 4.2 上运行良好。当我尝试从任何 iOS 5 设备访问 twitter 时,我遇到了身份验证 to
我试图理解访问键。我读过https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-se
我正在使用以下 API 列出我的 Facebook 好友。 https://graph.facebook.com/me/friends?access_token= ??? 我想知道访问 token 过
401 Unauthorized - Show headers - { "error": { "errors": [ { "domain": "global", "reas
我已经将我的 django 应用程序部署到 heroku 并使用 Amazon s3 存储桶存储静态文件,我发现从 s3 存储桶到 heroku 获取数据没有问题。但是,当我测试查看内容存储位置时,除
我是一名优秀的程序员,十分优秀!