2015-02-03 13 views
8

Play adında bir tablo var ve Yii2 ayrıntılı görünüm widget'ındaki her kaydın ayrıntılarını gösteriyorum. Bu minik tipte recurring tablosunda bir özniteliğim var, bu 0 veya 1 olabilir. Ama bir sayı olarak görüntülemek istemiyorum, bunun yerine yes veya no değerini görüntülemek istiyorum (0 veya 1)).DetailView widget'ında bir öznitelik değerinin değiştirilmesi

ben DetailView widget'ınızda bir işlevle bunu değiştirmeye çalışıyorum ancak bir hata alıyorum: Object of class Closure could not be converted to string

My ayrıntılı görünüm kodu:

<?= DetailView::widget([ 
    'model' => $model, 
    'attributes' => [ 
     'name', 
     'max_people_count', 
     'type', 
     [ 
      'attribute' => 'recurring', 
      'format'=>'raw', 
      'value'=> function ($model) { 
         if($model->recurring == 1) 
         { 

          return 'yes'; 

         } 
         else { 
         return 'no'; 
         } 
         }, 
     ], 
     'day', 
     'time', 
     ... 

Herhangi bir yardım mutluluk duyacağız!

+0

Benzer bir sorudan: [Detay Görünümündeki Kapatmalar] (http://stackoverflow.com/questions/39266846/assigning-function-to-value-attribute-in-details-view-yii2/39299638#39299638) – MacGyer

cevap

13

modelleri, DetailView süreçlerin sadece bir kümesi işler GridView aksine

'value' => $model->recurring == 1 ? 'yes' : 'no' 
+0

Bu hile yaptı, çok teşekkürler! – vrt1515

14

deneyin. Dolayısıyla, $model görüntü ve değişken olarak görülebilen tek model olduğundan kapatma kullanılmasına gerek yoktur.

rkm tarafından önerilen solution'u kesinlikle kullanabilirsiniz, ancak daha basit bir seçenek vardır. Yalnızca boolean olarak değeri görüntülemek için isterseniz, kolon ile biçimlendirici ek ekleyebilirsiniz

'value' => $model->recurring ? 'yes' : 'no' 

: izin verilen değerler sadece 0 ve 1 çünkü sen koşul biraz kolaylaştırabilirsiniz arada

'format' => 'raw' Burada gereksizdir, çünkü yalnızca html'siz metin. Daha fazla seçenek eklemek istiyorsanız

, bu kullanabilirsiniz: Bu etiketler config set uygulama dile bağlı olarak oluşturulacak çünkü

[ 
    'attribute' => 'recurring', 
    'format' => 'boolean',  
    // Other options 
], 

kullanma biçimlendirici daha esnek bir yaklaşımdır.

Resmi belgeler:

Ayrıca bkz this question, seninkinden oldukça benzer.

+1

Bu uygulamayı da birçok dilde yapacağım için çok kullanışlıdır, teşekkürler! – vrt1515

İlgili konular