1

特定のコンテンツ タイプの必須フィールドとしてファイル添付オプションを作成したいのですが、ユーザーは添付ファイルなしでノード フォームを送信できませんでした。
私がこれを行っている方法は機能していません。間違った方法で行っている場合は、plsが私を導きます。

function ims_form_alter(&$form, &$form_state, $form_id) {


    switch ($form_id) {

     case 'media_content_node_form':
          unset($form['buttons']['preview']);
          if(is_numeric(trim(arg(3))))
            {
              $arg_nid = arg(3);
              $form['field_media_model']['#default_value'][0]['nid'] = $arg_nid;
            }

            switch($form['#id'])
            {
              case "node-form":
              $form['attachments']['#required'] = true;
              break;
            }

          break;
        }
      }
4

2 に答える 2

2

DrupalのコアUploadモジュールの代わりにFileFieldを使用すると、Drupalでの生活が楽になることがわかりました。FileFieldを使用すると、コンテンツタイプにCCKフィールド(FileField)を作成し、他のCCKフィールドと同じようにそのフィールドを必須にすることができます。このアプローチでは、1行のコードを記述する必要はありません。

ただし、DrupalのコアUploadモジュールを使用する必要がある場合は、hook_form_alterを使用してこれを実行できます。次に例を示します。

function my_module_form_alter(&$form, &$form_state, $form_id) {
  switch ($form['#id']) {
    case "node-form":
      switch ($form['type']['#value']) {
        case "my_node_type":
          $form['attachments']['#required'] = true;
          break;
      }
    break;
  }
}
于 2011-09-21T15:29:53.133 に答える
2

はい、可能です。

  1. フォーム ID を確認します。通常、フォームを調べて ID を取得することで名前を取得できます。「-」を「_」に置き換えます。これにより、フォームのフォーム ID が得られます。
  2. form id == の場合に条件チェックを入れます。使用しますkrumo($form)(このステップの前に devel モジュールを有効にします)。
  3. krumo()すべてのフィールド名のリストを表示します。今、$form[<field_name>]['#required'] = 1;

お役に立てれば!!

于 2011-09-21T08:27:03.527 に答える