2016-08-16 9 views
3

私は、動的なより大きな進捗バーを形成するために、私のページにさまざまな進捗ウィジェットを一緒に表示させようとしています。ウィジェットのそれぞれは、ユーザをそのそれぞれの段階に導くためにクリック可能でなければならない。ここでは、私がこれまで試してみましたです: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>'; 
    } 
?> 

Iが進行ウィジェットの内容を変更するが、現在のコンテンツがクリック可能になるように、それをしないために、リンクを必要としています。リンクをクリックすると、それぞれのモデル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

属性..タグのすべてのhtmlキーを含むことができます。クラス、id、hrefも使用できます。obcluosly 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'], 
    ]) 
} 
?> 

たり、モデルを持っている場合、あなたはそれを解決

 '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

を使用することができますmystage_link属性!

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

'オプション' => [ 'のonclick' => "window.location.href = '{$のURL}'"]、

はあなたにみんなありがとう!

関連する問題