進行状況バーを作成するにはどうすればよいですか?


9

Drupal 7を使用してプログレスバーを実装する必要があります。これは私が実際に使用しているコードです。

$form[$name][$name.'_enc'] = array(
  '#type' => 'submit',
  '#value' => t($name.' Enable'),
  // '#submit' => array('submit_'.$name.'_enc'),
  '#ajax' => array(
    'callback' => 'submit_'.$name.'_enc',
    'wrapper' => 'ajax-response-goes-here',
    'method' => 'replace',
    'effect' => 'fade',
    'progress' => array (
      'type' => 'bar',
      'message' => 'convert..',
      'url' => 'misc/progress.js',
      'interval' => '1500'
)

通常はCSSプロパティが変更されます。サーバーの応答に基づいて、100%に達するまで幅を増やし続けます
GoodSp33d

2
Batch APIの使用を検討しましたか?
アロスボロ

回答:


3

['#ajax']['progress']['url']間違って設定したもの:JavaScriptファイルのURLではなく、プログレスバーがどの程度いっぱいかを判断するために使用するコールバックパスです。メニューコールバックは、操作が完了したかどうかを示す値を返す必要があり、またはそれはに含まれるコードを見てみる等、10%、20%、50%、で完了するprogress.jsのファイル、Iは、値が期待されている気づきます0から100の間である必要があります。

補足として、渡された値はに渡される['#ajax']['progress']['message']必要がありますt()


1

進行状況バーの例:

$form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Import'),
    '#ajax' => array(
        'callback' => 'import_submit_callback',
        'wrapper' => 'import-form',
        'progress' => array(
            'type' => 'bar',
            'message' => t('Importing..'),
            'url' => 'import/progress', //url to fetch current progress percentage
            'interval' => '1000' //progress bar will refresh in 1 second
        )
    ),
);

次に、「import / progress」というURLに対して次のようなメニューを作成します。

$items['import/progress'] = array(
    'title' => t('Import progress'),
    'page callback' => 'import_progress',
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
);

次に、そのページのコールバック関数で、次のような現在のステータスを示すjsonデータを出力します。

function import_progress() {
    $progress = array(
        'message' => t('Starting import...'),
        'percentage' => -1,
    );

    $completed_percentage = variable_get('import_status'); // calculate progress percentage here

    if($completed_percentage){
        $progress['message'] = t('Importing...');
        $progress['percentage'] = $completed_percentage ;
    }

    drupal_json_output($progress);
}

0

というメニューコールバックを1つ作成しましたsales/progress。ここで私は以下のように1つの関数を呼び出しました

function sales_progress() { 
   echo '{"percentage":"25","message":"Processing more..."}'; 
}

ここで、25は静的なパーセント値です。パーセンテージ値とメッセージテキストを希望どおりにカスタマイズできます。

定期的に上記の関数が呼び出されます。そして、プログレスバーの値が更新されます。詳細については、参照リンク

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.