Yii2 Progress Widget可点击字段

时间:2016-08-16 22:21:23

标签: php yii2

我正在尝试让我的页面显示一些不同的进度小部件,以形成一个动态更大的进度条。每个小部件都需要可点击以将用户带到相应的阶段。这是我到目前为止所尝试的:

<?php
    $retVal = "";
    $stages = Phases::find()->asArray()->all();
    foreach($stages as $stage)
    {
        $percent = PrjApprovals::percentageComplete($model->id, $stage['phase']);
        echo $retVal = '<div style="float:left; padding-top: 20px;">' .
        Progress::widget
        ([
            'percent' => $percent,
            'label' => $stage['phase'],
            'attributes' => 
                function($model)
                {
                    $url = Url::to(['phases/' . $stage['phase'], 'id' => $model->id]);
                    return ['onclick' => "window.location.href='{$url}'"];
                },
         ]) . '</div>';
    }
?>

我需要链接不要更改进度窗口小部件中的任何内容,但要使其可以使当前内容可单击。该链接需要将用户发送到他们点击的任何阶段,并使用相应的型号ID($ model-&gt; id)。

我知道“属性”不对,我尝试过barOptions,options,rowOptions和其他我能找到的东西。仍然没有运气。

2 个答案:

答案 0 :(得分:1)

options属性..可以包含标签的所有html密钥..所以你也可以使用class,id ...和href ..并且显而易见onclick to ..但是接受一个数组(带有模型值)而不是(我认为)一个匿名函数,所以你应该在你的模型中形成你的选项价值内容..

<?php
$retVal = "";
$stages = Phases::find()->asArray()->all();
foreach($stages as $stage)
{
    $percent = PrjApprovals::percentageComplete($model->id, $stage['phase']);
    echo $retVal = '<div style="float:left; padding-top: 20px;">' .
    Progress::widget
    ([
        'percent' => $percent,
        'label' => $stage['phase'],
        'options' => ['href' => 'your_url'], 
     ]) 
}
?>

或者如果您有模型属性mystage_link,则可以使用

     'options' => ['href' =>$model->mystage_link], 

答案 1 :(得分:0)

解决了!

$ url = Url :: to([&#39;阶段/&#39;。$ gate,&#39; id&#39; =&gt; $ model [&#39; id&#39;]] );

&#39;选择&#39; =&GT; [&#39;的onclick&#39; =&GT; &#34; window.location.href =&#39; {$ URL}&#39;&#34],

谢谢大家!