2015-05-10 14 views
29

W Yii2 Próbuję zbudować ukryte moc wejściowayii2 ukryty wartość wejściowa

echo $form->field($model, 'hidden1')->hiddenInput()->label(false); 

ale też trzeba to mieć jakąś wartość opcji, w jaki sposób można to zrobić?

Odpowiedz

26

zmieniając wartość tutaj nie ma sensu, ponieważ jest aktywne pole. Oznacza to, że wartość zostanie zsynchronizowana z wartością modelu.

Wystarczy zmienić wartość $model->hidden1, aby to zmienić. Lub zostanie zmieniony po otrzymaniu danych od użytkownika po przesłaniu formularza.

Przy użyciu non-aktywny ukryte wejście to będzie tak:

use yii\helpers\Html; 

... 

echo Html::hiddenInput('name', $value); 

Ale ten ostatni jest bardziej odpowiedni do stosowania na zewnątrz modelu.

+3

użyj tego -> Html :: activeHiddenInput ($ model, 'memid', ['value' => Yii :: $ app-> user-> identity-> id]); –

+1

Dzięki stary świetna robota. –

12

Można to zrobić za pomocą opcji

echo $form->field($model, 'hidden1', 
     ['options' => ['value'=> 'your value'] ])->hiddenInput()->label(false); 
+0

Zmieni to tylko atrybuty HTML kontenera pola. Zobacz [tutaj] (http://www.yiiframework.com/doc-2.0/yii-widgets-activefield.html#$options-detail). – arogachev

5

można też zrobić to

$model->hidden1 = 'your value';// better put it on controller 
$form->field($model, 'hidden1')->hiddenInput()->label(false); 

ten jest lepszym rozwiązaniem, jeśli ustawić wartość na kontrolerze

$model = new SomeModelName(); 

if ($model->load(Yii::$app->request->post()) && $model->save()) { 
    return $this->redirect(['view', 'id' => $model->group_id]); 
} else { 
    $model->hidden1 = 'your value'; 
    return $this->render('create', [ 
     'model' => $model, 
    ]); 
} 
+0

Jednym z dobrych sposobów na przypisanie dynamicznych wartości do wprowadzenia ukrytego pola. –

38

użyć następujących:

echo $form->field($model, 'hidden1')->hiddenInput(['value'=> $value])->label(false); 
+0

to działało dla mnie na Yii2. Dzięki! – MeV

12

prosty można napisać:

<?= $form->field($model, 'hidden1')->hiddenInput(['value'=>'abc value'])->label(false); ?> 
+0

Ta odpowiedź zadziałała. Używa on metody ActiveForm 'field()' zgodnie z pytaniem i dodatkowo poprawnie pokazuje jak określić wartość w metodzie 'hiddenInput()'. – russellfeeed

Powiązane problemy