ฉันมีเส้นทางต่อไปนี้ใน module_name.routing.yml
module_name.usergroup_delete:
path: 'module_name/usergroup/delete/{arg1}'
defaults:
_form: '\Drupal\module_name\Form\DeleteUserGroup'
_title: 'Delete User group'
requirements:
_permission: 'access admin menus'
นี่คือรหัสใน module_name / src / Form / DeleteUserGroup.php
namespace Drupal\module_name\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
class DeleteUserGroup extends ConfigFormBase {
public function getFormId() {
return 'delete_user_group';
}
/**
* General form for switching all nodes from one user to another.
*/
public function buildForm(array $form, FormStateInterface $form_state,$product_code) {
$form['_product'] = array(
'#type' => 'value',
'#value' => $product_code,);
//get the user group and username to display the confirmation message
$result = db_query('select field_p_group_name_value from {content_type_usergroup} ctu'
. ' where vid=%d',$product_code);
while ($row = $result->fetchObject()) {
$user_group = $row->field_p_group_name_value;
}
return confirm_form($form,t('Are you sure you want to delete "' .$user_group. '" User Group?'),
isset($_GET['destination']) ? $_GET['destination'] : "function_name",t('This action cannot be undone.'),t('Delete'),t('Cancel'));
}
/**
* #submit callback for node_adoption_transfer_form().
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$form_values = $form_state->getValues();
//if ($form_state['values']['confirm']) {
$param = $form_state->getValue('_product');
drupal_set_message(t('Group ' .$param.' will get deleted.'));
db_query('DELETE FROM {content_type_usergroup} WHERE vid = %d', $param);
//delete the users of the usergroup too
db_query('DELETE FROM {usergroup_user_map} WHERE group_id=%d', $param);
drupal_set_message(t('usergroup has been deleted.'));
drupal_goto('function_name');
}
protected function getEditableConfigNames() {
return "delete_user_group";
}
}
ฉันได้รับข้อผิดพลาดต่อไปนี้:
DeleteUserGroup :: buildForm () ต้องเข้ากันได้กับ Drupal \ Core \ Form \ FormInterface :: buildForm (อาร์เรย์ $ form, Drupal \ Core \ Form \ Form \ FormStateInterface $ form_state)
ทำไม?
ทุกคนสามารถอธิบายวิธีการนี้เท่ากับเมื่อใช้โมดูล WebForm? ฉันไม่มีโมดูลเฉพาะสำหรับฟอร์มที่ฉันสร้างโดยใช้โมดูลดังนั้นจุด '_form' จะอยู่ในไฟล์ routing.yml คืออะไร
—
John Cogan