2016-08-16 42 views
3

我试图让我的页面一起显示多个不同的进度小部件,形成一个动态更大的进度条。每个小部件都需要点击才能将用户带到相应的舞台。以下是我迄今为止尝试:Yii2 Progress Widget可点击字段

<?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-> id)。

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

+0

你想要堆叠进度条吗? http://getbootstrap.com/components/#progress-stacked – Bizley

+0

不,没有必要。我所希望的是,每个进度小部件都可以在GET请求中将用户发送到具有相同模型ID的不同阶段。链接应该看起来像/ Controller/Action + id = $ model-> id。 例如:/basic/web/index.php?r=phases%2Finitiation&id=3 – jamesdoe

回答

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], 
+0

如何添加'id'作为GET和舞台到url?我试过这个: 'options'=> ['href'=>'/ phases /'。 $ stage ['phase'],'id'=> $ model-> id], 但是没有骰子。 – jamesdoe

+0

与模型ID一样,每个阶段都必须动态添加到URL中。 – jamesdoe

+0

@jamesdoe好像我的答案引导你到正确的解决方案..应该是公平的你评价它.. .. – scaisEdge

0

解决它!

$ url = Url :: to(['phases /'。$ gate,'id'=> $ model ['id']]);

'选项'=> [ '的onclick'=> “window.location.href = '{$ URL}'”],

谢谢大家!