yii2隐藏的输入值

时间:2015-05-10 15:55:53

标签: yii2 hidden-field

在Yii2中,我试图构建隐藏的输入

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

但我还需要它有一些价值选项,我该怎么做?

10 个答案:

答案 0 :(得分:50)

使用以下内容:

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

答案 1 :(得分:32)

此处更改值没有意义,因为它是活动字段。这意味着价值将与模型价值同步。

只需更改$model->hidden1的值即可进行更改。或者在提交表格后收到用户的数据后会更改。

使用非活动隐藏输入时,它将是:

use yii\helpers\Html;

...

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

但后者更适合在模型之外使用。

答案 2 :(得分:17)

简单,你可以写:

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

答案 3 :(得分:12)

您可以使用选项

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

答案 4 :(得分:9)

你也可以这样做

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

如果在控制器上设置值

,这是一个更好的选择
$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,
    ]);
 }

答案 5 :(得分:1)

赞!

<?= $form->field($model, 'hidden')->hiddenInput(['class' => 'form-control', 'maxlength' => true,])->label(false) ?>

答案 6 :(得分:1)

您可以在视图(窗体)中使用此代码行

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

请以这个为例

如果您需要将当前日期和时间作为隐藏的输入内容: 模型属性为'created_on',其值是从date('Y-m-d H:i:s')检索的, 就像:“ 2020-03-10 09:00:00”

  <?= $form->field($model, 'created_on')->hiddenInput(['value'=>date('Y-m-d H:i:s')])->label(false) ?>

答案 7 :(得分:0)

<?= $form->field($model, 'hidden_Input')->hiddenInput(['id'=>'hidden_Input','class'=>'form-control','value'=>$token_name])->label(false)?>

<input type="hidden" name="test" value="1" />

使用它。

答案 8 :(得分:0)

你好世界!
你看,使用隐藏输入时的主要问题是你想传递什么样的数据? 我会假设您正在尝试传递用户 ID。
在这里传递它并不是一个好主意,因为 field() 方法会生成输入 并且该值将显示给用户,因为我们无法从用户浏览器中隐藏 html。如果您真的很关心网站的安全,那就这样做。

请检查此链接,您将看到无法隐藏用户查看的 value 属性。

那怎么办?

看,这就是 PHP 中 OOP 的核心。 我引用了 Matt Zandstr 在他的伟大著作 PHP Objects, Patterns, and Practice 第五版中的话

<块引用>

不过,我仍然被大量不必要的灵活性所困扰。我依靠客户端编码器来更改 ShopProduct 对象的默认值。这在两个方面是有问题的。首先,正确初始化 ShopProduct 对象需要五行代码,没有编码人员会为此感谢您。其次,我无法确保在初始化 ShopProduct 对象时设置任何属性。我需要的是一个在从类实例化对象时自动调用的方法。


请检查这个使用 __construct() 方法的例子,这在他的书中也有提到。

     class ShopProduct { 
       public $title;   
       public $producerMainName;  
       public $producerFirstName;  
       public $price = 0;
    
       public function __construct($title,$firstName,$mainName,$price) {
            $this->title = $title;
            $this->producerFirstName = $firstName;  
            $this->producerMainName = $mainName; 
            $this->price = $price;
    }
 }
     

你可以简单地做这个魔术。

$product1 = new ShopProduct("My Antonia","Willa","Cather",5.99 );
print "author: {$product1->getProducer()}\n";

这会产生以下结果:

author: Willa Cather

在您的情况下,这将与此类似,每次创建对象时,只需将用户 ID 传递给 user_id 属性,即可节省大量编码。

Class Car {
  private $user_id;
//.. your properties

  public function __construct($title,$firstName,$mainName,$price){
     $this->user_id = \Yii::$app->user->id;
    //..Your magic

   }
}

祝你好运!和快乐编码!

答案 9 :(得分:-1)

我知道这是旧文章,但有时HTML可以:

<input id="model-field" name="Model[field]" type="hidden" value="<?= $model->field ?>">

请注意

  • id:使用-而不是_
  • 的小写字母
  • 名称:首字母大写