web-dev-qa-db-ja.com

drupal_get_formを介してルールアクション設定フォームを呼び出す方法

だから、私は '/ admin/config/workflow/rules/reaction/manage/commerce_payment_Paypal_wps/edit/3'にあるフォームを埋め込もうとしています-これにはPaypalビジネスなどの設定が含まれています(commerce_Paypal_wps.moduleから) 。

Rules/ui/ui.controller.incを見ると、次のように呼ばれていることがわかります。

$items[$base_path . '/manage/%rules_config/edit/%rules_element'] = array(
      'title callback' => 'rules_get_title',
      'title arguments' => array('Editing !plugin "!label"', $base_count + 3),
      'page callback' => 'drupal_get_form',
      'page arguments' => array('rules_ui_edit_element', $base_count + 1, $base_count + 3, $base_path),
      'access arguments' => array('administer rules'),
      'load arguments' => array($base_count + 1),
      'file' => 'ui/ui.forms.inc',
      'file path' => drupal_get_path('module', 'rules'),
    );

Drupal_get_form( 'rules_ui_edit_element')に渡して、通常どおりフォームをレンダリングするために何を追加する必要があるのか​​、完全にはわかりません。

ルールアクション設定フォームをdrupal_get_formまたはその他のメカニズムを使用してレンダリングするには、いったいどのようにすればよいでしょうか。これを自分が選択したURLに配置して、クライアントに対して少し見栄えをよくすることができますか?

2
instanceofjamie

このようなURLを取得するには、古いバージョンのコマースを使用している必要があります。ずっと前にdmin/commerce/config/payment-methods/...に変更されています

hook_menuでは、commerce_payment_uiモジュールがルールフォームを配置するパスを作成します。

// Add the menu items for the various Rules forms.
$controller = new RulesUIController();
$items += $controller->config_menu('admin/commerce/config/payment-methods');

URLを変更する場合は、これらを変更できます。ただし、このURLは他の場所でも使用されていることに注意してください。

/**
 * Builds the payment settings page using the Rules UI overview table filtered
 *   to display payment method rules.
 */
function commerce_payment_ui_admin_page() {
  RulesPluginUI::$basePath = 'admin/commerce/config/payment-methods';

  ...
}

これらの設定フォームの作成を含め、ルールが行うことのほとんどはクラスに基づいているため、フォームを作成するのは簡単ではありません。ルールのコードについてはあまり詳しく説明していませんが、パブリック関数が

  • form
  • form_validate
  • form_submit

これらはフォームの作成に使用されると思いますが、それがFAPIでどのように終わるかは私を超えています。パスを変更するだけの場合は、hook_menu_alterを使用し、商取引の場合はcommerce_payment_ui_admin_page関数を独自の関数で上書きして概要テーブルを作成できます。

1
googletorp