Pertanyaan Yii mengirimkan parameter ke widget


Maaf jika saya menggunakan kata kunci yang salah. Mungkin saya tidak mendapatkan informasi yang cukup karena kata kunci yang salah.

kami membuat widget di Yii dengan cara ini:

class streamList extends CWidget {
  //do some stuff
}

Juga, kami menggunakan widget ini di mana saja sebagai

$this->widget("application.components.widget.streamList");

Bagaimana kita bisa menulis widget sedemikian rupa sehingga menerima parameter (s) sebagai

$this->widget("application.components.widget.streamList",array('title'=>'Posts');

Saya googled tetapi tidak memecahkan. Tolong bantu, terima kasih sebelumnya.

Edit log: Juga, bagaimana kita bisa mendefinisikan nilai parameter default untuk 'titile'? Saya mencoba public $title = Shk::getTitle(), tetapi itu tidak berhasil.


4
2018-02-15 20:24


asal


Jawaban:


Menggunakan

class StreamList extends CWidget {
    //do some stuff
    public $title;
}

Atribut apa pun dapat diinisialisasi dengan nilai default dan ditimpa oleh

$this->widget("application.components.widget.StreamList",array('title'=>'Posts',.....)

EDIT

Anda tidak dapat menginisialisasi atribut kelas dengan fungsi. Penjelasan diberikan sini. Pilihannya adalah untuk memeriksa apakah $title diatur dan jika tidak diatur ke Shk::getTitle() dalam init() metode suka

public function init(){
    ....
    if(!isset($this->title) || !$this->title)
        $this->title=Shk::getTitle();
    ....
}

P.S untuk konsistensi lebih baik untuk Memanfaatkan nama kelas Anda.


11
2018-02-15 20:33