2012-08-23 10 views
17

Więc mam błahostkę z ramą yii i w jednym z widoków, konkretnie w formularzu tworzenia, próbuję nadać jednemu z moich pól tekstowych wartość domyślną. Dlatego kiedy wchodzę na stronę tworzenia, wartości są już wstępnie załadowane na formularzu.

Tu jest mój bieżący kod

<div class="row"> 
    <?php echo $form->labelEx($model,'teamlead'); ?> 
    <?php echo $form->textField($model,'teamlead',array('size'=>50,'maxlength'=>50,'value'=>Yii::app()->user->getUsername(),'disabled'=>'disabled')); ?> 
    <?php echo $form->error($model,'teamlead'); ?> 
</div> 

Po naciśnięciu tworzyć, Yii daje mi błąd informujący mnie, że tam TextField jest pusty? Nie wiem, co jeszcze mogę zrobić poza ustawieniem wartości. Czy mam również ustawić atrybuty modelu?

Odpowiedz

16

przed opis pola dodać to:

<?php 
$model->teamlead='my default value'; 
?> 
+1

więc umieścić tę linię przed div? – user1436497

+0

Nieważne, naprawiłem to, ale musiałem ustawić domyślne wartości w kontrolerze. Dokładniej w funkcji tworzenia. Czy istnieje sposób, w jaki mogę ustawić go w widoku? – user1436497

+0

po prostu ustaw tę wartość dla zmiennej $ model w twoim widoku powyżej, gdzie jest to pole, które jest wystawiane. Lub możesz ustawić tę wartość jako wartość domyślną w funkcji 'init()' modelu. – acorncom

3

Zawsze jest sporo pomysł z danymi (wartości defaul, zmiana po coś się dzieje, obróbka danych, etc) w klasie modelu.

Jeśli otrzymujesz wartość po zainicjowaniu modelu, najlepiej jest użyć metody init().

Ale, jeśli chcesz zmienić lub określić wartość domyślną po załadowanie danych z bazy danych, można użyć metody afterFind()

Na przykład:

public function afterFind(){ 
    $this->localdate = date("Y-m-d"); 
    parent::afterFind(); 
} 

Ten link ma dużo przydatne informacje na temat tych metod: http://www.yiiframework.com/doc/guide/1.1/en/database.ar#customization

4

Proszę używać array('readonly' => true) zamiast disabled.

4

Oto mój kod, że wysyłam stałą wartość do bazy danych i wyświetlam tę wartość tylko do odczytu.

<?php echo $form->textField($model,'pp_status', array('value'=>'Open', 'readonly' => 'true')); ?> 
16

To działa na mojej stronie:

<?= $form->field($model, 'some_field')->textInput(['readonly' => true, 'value' => 'Your Value']) ?> 
+1

To nie jest dobry pomysł. Pole będzie zawsze miało tę wartość i jeśli chcesz zaktualizować model za pomocą tego formularza, zawsze zobaczysz "Twoja wartość" zamiast modelu. –

-1
<div class="row"> 
    <?php echo $form->labelEx($model,'teamlead'); ?> 
    <?php echo $form->textField($model,'teamlead',array('readonly'=>'true',size'=>50,'maxlength'=>50,'value'=>Yii::app()->user->getUsername(),'disabled'=>'disabled')); ?> 
    <?php echo $form->error($model,'teamlead'); ?> 
</div> 

umieścić array('readonly'=>'true') w twojej kodowanie to będzie działać

Powiązane problemy