yii2 隐藏输入值

Posted

技术标签:

【中文标题】yii2 隐藏输入值【英文标题】:yii2 hidden input value 【发布时间】:2015-07-21 02:49:27 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

你可以通过选项来做到这一点

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

【讨论】:

它只会改变字段容器的 html 属性。见here。【参考方案2】:

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

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

使用非活动隐藏输入将是这样的:

use yii\helpers\Html;

...

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

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

【讨论】:

使用这个 -> Html::activeHiddenInput($model, 'memid', ['value' => Yii::$app->user->identity->id]); 谢谢老兄干得好。【参考方案3】:

你也可以这样做

$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,
    ]);
 

【讨论】:

为输入隐藏字段分配动态值的好方法之一。【参考方案4】:

使用以下内容:

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

【讨论】:

【参考方案5】:

你可以写简单:

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

【讨论】:

这个答案对我有用。它根据问题使用 ActiveForm 方法 field(),另外还正确显示了如何在 hiddenInput() 方法中指定值。【参考方案6】:

我知道这是旧帖子,但有时 HTML 还可以:

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

请保重

id:带有 - 而不是 _ 的小写字母 姓名:第一个大写字母

【讨论】:

你在这里冒着 html 注入的风险。当框架方法存在时,使用它们、学习它们、信任它们。 @HarryB 你能解释一下 HTML 感染的风险吗?我看不出纯 HTML 有多不安全。 @crafter 内置的 Yii 方法会在将字符串用作输入的值属性之前自动对字符串进行编码。上面的代码会将$model-&gt;field 包含的任何内容放入值输入中,而无需先对其进行编码。 如果 $model-&gt;field 包含 "&gt;&lt;script&gt;alert('hello!');&lt;/script&gt;&lt;" 那么你会在页面上看到一个 js 警报。理论上可以是访问者提交或存储的任何js。【参考方案7】:

像这样:

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

【讨论】:

【参考方案8】:
<?= $form->field($model, 'hidden_Input')->hiddenInput(['id'=>'hidden_Input','class'=>'form-control','value'=>$token_name])->label(false)?>

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

使用这个。

【讨论】:

【参考方案9】:

您可以在视图(表单)中使用此代码行

 <?= $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) ?>

【讨论】:

【参考方案10】:

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

请查看此链接,您会发现无法隐藏 value 属性不让用户看到。

那该怎么办呢? 看,这就是 php 中 OOP 的核心。 我在他的伟大著作 PHP 对象、模式和实践第五版中引用了 Matt Zandstr 的话

不过,我仍然被大量不必要的灵活性所困扰。我依靠客户端编码器来更改 ShopProduct 对象的默认值。这在两个方面存在问题。首先,正确初始化 ShopProduct 对象需要 5 行代码,没有任何程序员会为此感谢您。其次,我无法确保在初始化 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

   

祝你好运!快乐编码!

【讨论】:

以上是关于yii2 隐藏输入值的主要内容,如果未能解决你的问题,请参考以下文章

在 Yii2 DatePicker 小部件中隐藏历史下拉选择值

在 Javascript 中设置隐藏的输入值,然后在代码隐藏中访问它

Yii2动态表格wbraganca复制值到克隆字段[重复]

选择特定选择值时显示隐藏输入

Yii2 从表单获取用户输入

设置/更改 HTML 隐藏输入值时可以捕获啥事件