這是我想實現的。 (我認爲這會更容易)。 我有一個UserEntity。 每個該實體的字段具有: 「@assert \ NOTNULL(組= {」 步驟-1 「})」 或 「@assert \ NOTNULL(組= {」 第2步 「})」Sf2在一頁上以多種形式分割一個formType
/** @ORM\Column(name="username", type="string", length=255, nullable = true)
* @Assert\NotNull(groups={"step-1"})
*/
protected $username;
/** @ORM\Column(name="city", type="string", length=255, nullable = true)
* @Assert\NotNull(groups={"step-2"})
*/
protected $city;
在formType,我有我的2場加2提交按鈕:
->add('username')
->add('city')
->add('submit_form_1', SubmitType::class, array(
'validation_groups' => 'step-1',
)
)
->add('submit_form_2', SubmitType::class, array(
'validation_groups' => 'step-2',
)
)
我想要做的是顯示用戶名的inputType,其次是submitOne按鈕。 然後顯示City inputType,然後顯示submitTwo按鈕。
然後,當用戶點擊提交一,驗證數據,並保存該數據庫中的字段。
這是我的觀點:
{{ form_start(form, { 'action': path('fos_user_profile_edit'), 'attr': { 'novalidate' : 'novalidate', 'class': 'fos_user_profile_edit' } }) }}
{{ form_row(form.userType.city) }}
{{ form_widget(form._token) }}
{{ form_widget(form.userType.submit_form_2) }}
{{ form_end(form, {'render_rest': false}) }}
{{ form_start(form, { 'action': path('fos_user_profile_edit'), 'attr': { 'novalidate' : 'novalidate', 'class': 'fos_user_profile_edit' } }) }}
{{ form_row(form.userType.username) }}
{{ form_widget(form._token) }}
{{ form_widget(form.userType.submit_form_1) }}
{{ form_end(form, {'render_rest': false}) }}
當我提交的第一種形式一切都很正常。 當我提交第二個,我有一個「無效的CSRF令牌錯誤」,事實上,如果我看着DOM,只有第一個窗體有一個輸入類型與CSRF令牌隱藏。
我嘗試手動輸入CSRF標記(就像一個測試),當我提交一個表單時,這個表單的數據是持久的,但是其他表單的數據表單被設置爲null。
我現在被卡住了。 也許我做錯了,總的想法是在同一頁面上將單個實體拆分爲不同形式。
謝謝!
這個答案有幫助嗎? – Ryguydg