2015-05-10 15 views
29

In Yii2 sto cercando di costruire input nascostoyii2 valore di input nascosto

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

Ma ho anche bisogno di avere un po 'value option, come posso farlo?

risposta

26

la modifica del valore qui non ha senso, perché è campo attivo. Significa che il valore sarà sincronizzato con il valore del modello.

Basta modificare il valore di $model->hidden1 per modificarlo. Oppure verrà modificato dopo aver ricevuto i dati dall'utente dopo aver inviato il modulo.

Con l'uso del metodo nascosto non attivo sarà così:

use yii\helpers\Html; 

... 

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

Ma quest'ultimo è più adatto per l'utilizzo fuori del modello.

+3

usa questo -> Html :: activeHiddenInput ($ model, 'memid', ['value' => Yii :: $ app-> user-> identity-> id]); –

+1

Grazie amico ottimo lavoro. –

12

si può fare con le opzioni

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

Cambierà solo gli attributi HTML del contenitore del campo. Vedi [qui] (http://www.yiiframework.com/doc-2.0/yii-widgets-activefield.html#$options-detail). – arogachev

5

si può anche fare questo

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

questa è una scelta migliore se si imposta il valore sul controller

$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

Uno dei buoni modi per assegnare valori dinamici all'input campo nascosto. –

38

Usa la seguente:

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

questo ha funzionato per me su yii2. Grazie! – MeV

12

semplice si può scrivere:

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

Questa risposta ha funzionato per me. Usa il metodo ActiveForm 'field()' come da domanda e mostra inoltre correttamente come specificare il valore nel metodo 'hiddenInput()'. – russellfeeed