আমি কীভাবে ফর্ম নির্মাতার কাছে পরামিতিগুলি পাস করব?


15

মডিউল_নেম.আরউটিং.আইএমএল-এ আমার নীচের রুট রয়েছে।

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'

এটি মডিউল_নাম / এসসিআর / ফর্ম / ডিলিটউজারগ্রুপ.এফপি-র কোড।

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";
  }

}

আমি নিম্নলিখিত ত্রুটি পাচ্ছি:

ডিলিটউজারগ্রুপ :: বিল্ডফর্ম () অবশ্যই ড্রুপাল ore কোর \ ফর্ম \ ফর্মইন্টারফেস :: বিল্ডফর্ম (অ্যারে $ ফর্ম, ড্রুপাল ore কোর \ ফর্ম \ ফর্মস্টেটআইন্টারফেস $ ফর্ম_স্টেট) এর সাথে সামঞ্জস্যপূর্ণ হতে হবে

কেন?


ওয়েবফর্ম মডিউলটি ব্যবহার করার সময় এটি কীভাবে সমান হয় কেউ ব্যাখ্যা করতে পারেন? মডিউলটি ব্যবহার করে আমি যে ফর্মটি তৈরি করেছি তার জন্য আমার বিশেষভাবে কোনও মডিউল নেই, সুতরাং রাউটিং.আইএমএল ফাইলের মধ্যে '_for' বিন্দুটি কী হবে?
জন কোগান

উত্তর:


28

রাউটিং.আইএমএল এবং বিল্ড পদ্ধতিতে প্যারামিটারটির একই নাম থাকতে হবে। এবং ফর্মগুলিতে পরামিতিগুলি ব্যবহার করার সময় আপনাকে প্যারামিটার তালিকায় একটি নাল মান সেট করতে হবে:

public function buildForm(array $form, FormStateInterface $form_state, $arg1 = NULL) {

পুনরুদ্ধারযোগ্য মারাত্মক ত্রুটি: আর্গুমেন্ট 2 db_query () এ পাস হয়েছে অবশ্যই ধরণের অ্যারে হতে হবে, স্ট্রিং দেওয়া হবে
Crazyrubixfan

যখন ফাংশনে আরজি 1 ব্যবহার করার চেষ্টা করছি
Crazyrubixfan

1
ঠিক আছে, তারপরে ফর্মগুলির পরামিতিগুলির সাথে এই প্রশ্নের সমস্যার সমাধান হবে। বিল্ডফর্মের কল () সফল হয়েছিল। আপনি db_query () নিয়ে একটি নতুন সমস্যার মুখোমুখি হয়েছেন, যা রুট থেকে স্ট্রিং প্যারামিটার গ্রহণ করে না।
4k4

হ্যা ধন্যবাদ . সমস্যাটি db_query নিয়ে। এখনই
পরম পাচ্ছি

11

প্রথমে একটি রুটিং.আইএমএল ফাইল তৈরি করুন

admin_notes.form:
  path: '/example_module/form/{arg}'
  defaults:
    _form: '\Drupal\example_module\Form\ExampleForm'
  requirements:
    _permission: 'access content'

তারপরে ফোল্ডার কাঠামোর অধীনে একটি। Php ফাইল তৈরি করুন /src/Form/ExampleForm.php। তারপরে একটি ফর্ম তৈরি করুন

public function buildForm(array $form, FormStateInterface $form_state,$arg = NULL) {

             $form['example_note'] = array(
            '#type' => 'textarea',
            '#title' => t('Block contents'),
            '#description' => t('This text will appear in the example block.'),
            '#default_value' => $arg,
        );
       $form['actions'] = ['#type' => 'actions'];
        $form['actions']['delete'] = array(
            '#type' => 'submit',
            '#value' => $this->t('Delete'),
        );

return $form;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.