2016-04-01 2 views
1

Ich habe ein Widget UploadmaWidget:Yü 2 Erste unbekannte Eigenschaft: yii web Ansicht :: Attribut

namespace vendor\maydin; 
use yii\base\Widget; 
use yii\helpers\Html; 
class UploadmaWidget extends Widget 
{ 
    public $message; 
    public $model; 
    public $attribute; 
    public function init() 
    { 
     parent::init(); 
     if ($this->message === null) { 
      $this->message = 'Hello World'; 
     } 
    } 
    public function run() 
    { 
     UploadmaWidgetAsset::register($this->getView()); 
     return $this->render('index',['message'=>$this->message]); 
    } 
    public function getViewPath() 
    { 
     return '@vendor/maydin/views/'; 
    } 

} 

Und ich mache in Indexansicht Datei:

<?php 
    use yii\helpers\Html; 
    use yii\web\View; 
    ?> 
    <?= $this->message;?> 
    <?= $this->attribute;?> 

Wenn ich Nachrichtenwert nennen kein Problem, aber Attribut ist problem.Ich möchte nicht Attributwert über Render-Funktion senden.

EDIT: Weil ich so gebrauchten Widget in Yü 1.1, aber es ist nicht in Yü 2.0 (NOW)

Schließlich nenne ich Widget wie folgt arbeitet:

<?php 
use vendor\maydin\UploadmaWidget; 
echo UploadmaWidget::widget([ 
'message' => 'Hello World', 
'model'=>$model, 
'attribute' => 'mahmut', 
]) ;?> 

Wie kann ich Attributwert in der Widget-Ansichtsdatei?

Antwort

1

sollten Sie übergeben Attribut Blick in run Methode Ihrer UploadmaWidget ähnlich vorbei Nachricht:

public function run() 
{ 
    UploadmaWidgetAsset::register($this->getView()); 
    return $this->render('index', 
     ['message'=>$this->message, 'attribute'=>$this->attribute]); 
} 

Danach ändert man $this->attribute in Ihrer Ansicht verwenden können.

In Yii1 CWidget erweitert CBaseController und in Sicht können Sie auf öffentliche CWidget-Eigenschaften zugreifen, aber nicht in Yii2. Wir können Realisierung vergleichen hier:

  • Widget-Klasse in Yii2 und seine render Methode
  • Widget-Klasse in Yii1 und seine render Methode
+0

Ich habe erklären: "Ich will nicht Attributwert senden über Render-Funktion " –

+0

Sehen Sie, wie es auf GitHub funktioniert: https://github.com/yiisoft/yii2/blob/3f4fcbe569e3460ad7b28085b957c3b2f47b5334/framework/base/widget.php # l185. zweites Attribut ist '$ params die Parameter (Name-Wert-Paare), die in der Ansicht zur Verfügung gestellt werden sollen. –

+0

Wenn Sie dieses Attribut nicht über die Renderfunktion senden möchten, möchten Sie nicht, dass dieses Attribut in der Ansicht verfügbar ist –