web-dev-qa-db-ja.com

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

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'
)
9
amr

_['#ajax']['progress']['url']_として設定した内容が間違っています:これはJavaScriptファイルのURLではなく、進行状況バーがどの程度いっぱいかを判断するために使用するコールバックパスです。メニューコールバックは、操作が完了したか、または10%、20%、50%などで完了したかを示す値を返す必要があります。 progress.js ファイルに含まれているコードを確認してください、値は0から100の間であることが期待されています。

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

3
kiamlaluno

進行状況バーの例:

$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);
}
1
tikendra.chand

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

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

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

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

0
kalidasan