Class yii\bootstrap4\Progress

Inheritanceyii\bootstrap4\Progress » yii\bootstrap4\Widget » yii\base\Widget
Uses Traitsyii\bootstrap4\BootstrapWidgetTrait
Source Code https://github.com/yiisoft/yii2-bootstrap4/blob/master/src/Progress.php

Progress renders a bootstrap progress bar component.

For example,

// default with label
echo Progress::widget([
    'percent' => 60,
    'label' => 'test'
]);
// or
echo Progress::widget([
    'bars' => [
        ['percent' => 60, 'label' => 'test']
    ]
]);

// styled
echo Progress::widget([
    'percent' => 65,
    'barOptions' => ['class' => 'bg-danger']
]);
// or
echo Progress::widget([
    'bars' => [
        ['percent' => 65, 'options' => ['class' => 'bg-danger']]
    ]
]);

// striped
echo Progress::widget([
    'percent' => 70,
    'barOptions' => ['class' => ['bg-warning', 'progress-bar-striped']]
]);
// or
echo Progress::widget([
    'bars' => [
        ['percent' => 70, 'options' => ['class' => ['bg-warning', 'progress-bar-striped']]]
    ]
]);

// striped animated
echo Progress::widget([
    'percent' => 70,
    'barOptions' => ['class' => ['bg-success', 'progress-bar-animated', 'progress-bar-striped']]
]);
// or
echo Progress::widget([
    'bars' => [
        ['percent' => 70, 'options' => ['class' => ['bg-success', 'progress-bar-animated', 'progress-bar-striped']]]
    ]
]);

// stacked bars
echo Progress::widget([
    'bars' => [
        ['percent' => 30, 'options' => ['class' => 'bg-danger']],
        ['percent' => 30, 'label' => 'test', 'options' => ['class' => 'bg-success']],
        ['percent' => 35, 'options' => ['class' => 'bg-warning']],
    ]
]);

See also https://getbootstrap.com/docs/4.5/components/progress/.

Public Properties

Hide inherited properties

Property Type Description Defined By
$barOptions array The HTML attributes of the bar. yii\bootstrap4\Progress
$bars array A set of bars that are stacked together to form a single progress bar. yii\bootstrap4\Progress
$clientEvents array The event handlers for the underlying Bootstrap JS plugin. yii\bootstrap4\BootstrapWidgetTrait
$clientOptions array The options for the underlying Bootstrap JS plugin. yii\bootstrap4\BootstrapWidgetTrait
$label string The button label. yii\bootstrap4\Progress
$options array The HTML attributes for the widget container tag. yii\bootstrap4\Widget
$percent integer The amount of progress as a percentage. yii\bootstrap4\Progress

Protected Methods

Hide inherited methods

Method Description Defined By
registerClientEvents() Registers JS event handlers that are listed in $clientEvents. yii\bootstrap4\BootstrapWidgetTrait
registerPlugin() Registers a specific Bootstrap plugin and the related events yii\bootstrap4\BootstrapWidgetTrait
renderBar() Generates a bar yii\bootstrap4\Progress
renderProgress() Renders the progress. yii\bootstrap4\Progress

Property Details

Hide inherited properties

$barOptions public property (available since version 2.0.6)

The HTML attributes of the bar. This property will only be considered if $bars is empty

See also \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.

public array $barOptions = []
$bars public property

A set of bars that are stacked together to form a single progress bar. Each bar is an array of the following structure:

[
    // required, the amount of progress as a percentage.
    'percent' => 30,
    // optional, the label to be displayed on the bar
    'label' => '30%',
    // optional, array, additional HTML attributes for the bar tag
    'options' => [],
]
public array $bars null
$label public property

The button label. This property will only be considered if $bars is empty

public string $label null
$percent public property

The amount of progress as a percentage. This property will only be considered if $bars is empty

public integer $percent 0

Method Details

Hide inherited methods

getView() public abstract method

Defined in: yii\bootstrap4\BootstrapWidgetTrait::getView()

See also \yii\base\Widget::getView().

public abstract \yii\web\View getView ( )
return \yii\web\View

The view object that can be used to render views or view files.

                abstract function getView();

            
init() public method

Initializes the widget.

This method will register the bootstrap asset bundle. If you override this method, make sure you call the parent implementation first.

public void init ( )

                public function init()
{
    parent::init();
    Html::addCssClass($this->options, ['widget' => 'progress']);
}

            
registerClientEvents() protected method

Defined in: yii\bootstrap4\BootstrapWidgetTrait::registerClientEvents()

Registers JS event handlers that are listed in $clientEvents.

protected void registerClientEvents ( )

                protected function registerClientEvents()
{
    if (!empty($this->clientEvents)) {
        $id = $this->options['id'];
        $js = [];
        foreach ($this->clientEvents as $event => $handler) {
            $js[] = "jQuery('#$id').on('$event', $handler);";
        }
        $this->getView()->registerJs(implode("\n", $js));
    }
}

            
registerPlugin() protected method

Defined in: yii\bootstrap4\BootstrapWidgetTrait::registerPlugin()

Registers a specific Bootstrap plugin and the related events

protected void registerPlugin ( $name )
$name string

The name of the Bootstrap plugin

                protected function registerPlugin($name)
{
    $view = $this->getView();
    BootstrapPluginAsset::register($view);
    $id = $this->options['id'];
    if ($this->clientOptions !== false) {
        $options = empty($this->clientOptions) ? '' : Json::htmlEncode($this->clientOptions);
        $js = "jQuery('#$id').$name($options);";
        $view->registerJs($js);
    }
    $this->registerClientEvents();
}

            
renderBar() protected method

Generates a bar

protected string renderBar ( $percent, $label '', $options = [] )
$percent integer

The percentage of the bar

$label string

, optional, the label to display at the bar

$options array

The HTML attributes of the bar

return string

The rendering result.

                protected function renderBar($percent, $label = '', $options = [])
{
    $percent = (float)trim(rtrim($percent, '%'));
    $options = array_merge($options, [
        'role' => 'progressbar',
        'aria-valuenow' => $percent,
        'aria-valuemin' => 0,
        'aria-valuemax' => 100
    ]);
    Html::addCssClass($options, ['widget' => 'progress-bar']);
    Html::addCssStyle($options, ['width' => $percent . '%'], true);
    return Html::tag('div', $label, $options);
}

            
renderProgress() protected method

Renders the progress.

protected string renderProgress ( )
return string

The rendering result.

throws \yii\base\InvalidConfigException

if the "percent" option is not set in a stacked progress bar.

                protected function renderProgress()
{
    $out = Html::beginTag('div', $this->options) . "\n";
    if (empty($this->bars)) {
        $this->bars = [
            ['label' => $this->label, 'percent' => $this->percent, 'options' => $this->barOptions]
        ];
    }
    $bars = [];
    foreach ($this->bars as $bar) {
        $label = ArrayHelper::getValue($bar, 'label', '');
        if (!isset($bar['percent'])) {
            throw new InvalidConfigException("The 'percent' option is required.");
        }
        $options = ArrayHelper::getValue($bar, 'options', []);
        $bars[] = $this->renderBar($bar['percent'], $label, $options);
    }
    $out .= implode("\n", $bars) . "\n";
    $out .= Html::endTag('div');
    return $out;
}

            
run() public method

public void run ( )
throws \yii\base\InvalidConfigException

                public function run()
{
    BootstrapAsset::register($this->getView());
    return $this->renderProgress();
}