2016-04-01 27 views
1

Ben bir widget UploadmaWidget vardır:Yii 2 bilinmeyen özelliği alınıyor: yii web Görünüm :: nitelik

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/'; 
    } 

} 

Ve endeks görünümü dosyasında işlemek:

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

ben mesajı değerini ararsam sorun değil ama öznitelik problem.İşleme işleviyle öznitelik değeri göndermek istemiyorum.

DÜZENLEME: Ben yii 1.1 böyle kullanılan widget'ı var ama

Nihayet böyle Widget diyoruz 2,0 (NOW) Yii çalışmıyor Çünkü:

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

nasıl kullanabilirsiniz Widget görünüm dosyasındaki özellik değeri?

cevap

1

Sen geçen iletiye benzer senin UploadmaWidget ait run yöntemi haline Görünüm özelliğini geçmelidir:

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

bu sizin görünüme $this->attribute kullanabilirsiniz değiştirir sonra.

Yii1'de CWidget CBaseController'ı genişletir ve sizde CWidget public özelliklerine erişebilirsiniz, ancak Yii2'de değil. Yii2 içinde

  • Araç sınıf ve Yii1 yılında render yöntem
  • Araç sınıfı ve render yöntem
+0

ben yoluyla nitelik değeri göndermek istemiyoruz "beyan var: Burada gerçekleşmesini karşılaştırabilirsiniz render işlevi " –

+0

Github'da nasıl çalıştığına bakın: https://github.com/yiisoft/yii2/blob/3f4fcbe569e3460ad7b28085b957c3b2f47b5334/framework/base/Widget.php#L185. ikinci öznitelik '$ görünümde kullanılabilir olması gereken parametreleri (ad-değer çiftleri) params'tir.' –

+0

Bu özelliği render işleviyle göndermek istemiyorsanız, bu özniteliğin görünümde erişilebilir olmasını istemezsiniz. –