Yii2 将隐藏输入设置为当前用户 ID
Yii2 set hidden input as current user id
我正在尝试使用 Yii2 将表单字段设置为当前登录用户的 ID。
这是我的表格:
<?php $form = ActiveForm::begin();?>
<?= Html::activeHiddenInput($model, 'id', array('value'=> $model->getId()));?>
<?= $form->field($model, 'offer_type_id') ?>
<?= $form->field($model, 'offer_description')->textArea(['rows' => 6]) ?>
<?= $form->field($model, 'start_date') ?>
<?= $form->field($model, 'end_date') ?>
<?= $form->field($model, 'store_id') ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
这是我的模型:
use Yii;
use yii\web\IdentityInterface;
/**
* This is the model class for table "tbl_offers".
*
* @property integer $offer_id
* @property integer $id
* @property integer $offer_type_id
* @property string $offer_description
* @property string $start_date
* @property string $end_date
* @property integer $store_id
*/
class TblOffers extends \yii\db\ActiveRecord implements IdentityInterface
{
public static function findIdentity($id)
{
return static::findOne($id);
}
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['access_token' => $token]);
}
public function getId()
{
return $this->id;
}
public function getAuthKey()
{
return $this->authKey;
}
public function validateAuthKey($authKey)
{
return $this->authKey === $authKey;
}
/**
* @inheritdoc
*/
public static function tableName()
{
return 'tbl_offers';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[[ 'id', 'offer_type_id', 'offer_description', 'start_date', 'end_date', 'store_id'], 'required'],
[[ 'id', 'offer_type_id', 'store_id'], 'integer'],
[['start_date', 'end_date'], 'safe'],
[['offer_description'], 'string', 'max' => 8000]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'offer_type_id' => 'Offer Type ID',
'offer_description' => 'Offer Description',
'start_date' => 'Start Date',
'end_date' => 'End Date',
'store_id' => 'Store ID',
];
}
public function getofferId()
{
return $this->getPrimaryKey();
}
}
关于我哪里出错了有什么想法吗?当我在填写完其余部分后尝试保存表格时,表格不会提交(我猜这是因为 ID 字段尚未填写)任何帮助将不胜感激!
id
为空,因为您将其设置为 $this->id
,但尚未在任何地方设置。
您可以使用Yii::$app->user->id
获取当前登录的用户。因此,不需要隐藏字段或 id
的规则。您可以使用 ActiveRecord::beforeSave()
手动设置 id
:
public function beforeSave($insert = true) {
if ($insert)
$this->id = Yii::$app->user->id;
return parent::beforeSave($insert);
}
我正在尝试使用 Yii2 将表单字段设置为当前登录用户的 ID。 这是我的表格:
<?php $form = ActiveForm::begin();?>
<?= Html::activeHiddenInput($model, 'id', array('value'=> $model->getId()));?>
<?= $form->field($model, 'offer_type_id') ?>
<?= $form->field($model, 'offer_description')->textArea(['rows' => 6]) ?>
<?= $form->field($model, 'start_date') ?>
<?= $form->field($model, 'end_date') ?>
<?= $form->field($model, 'store_id') ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
这是我的模型:
use Yii;
use yii\web\IdentityInterface;
/**
* This is the model class for table "tbl_offers".
*
* @property integer $offer_id
* @property integer $id
* @property integer $offer_type_id
* @property string $offer_description
* @property string $start_date
* @property string $end_date
* @property integer $store_id
*/
class TblOffers extends \yii\db\ActiveRecord implements IdentityInterface
{
public static function findIdentity($id)
{
return static::findOne($id);
}
public static function findIdentityByAccessToken($token, $type = null)
{
return static::findOne(['access_token' => $token]);
}
public function getId()
{
return $this->id;
}
public function getAuthKey()
{
return $this->authKey;
}
public function validateAuthKey($authKey)
{
return $this->authKey === $authKey;
}
/**
* @inheritdoc
*/
public static function tableName()
{
return 'tbl_offers';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[[ 'id', 'offer_type_id', 'offer_description', 'start_date', 'end_date', 'store_id'], 'required'],
[[ 'id', 'offer_type_id', 'store_id'], 'integer'],
[['start_date', 'end_date'], 'safe'],
[['offer_description'], 'string', 'max' => 8000]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'offer_type_id' => 'Offer Type ID',
'offer_description' => 'Offer Description',
'start_date' => 'Start Date',
'end_date' => 'End Date',
'store_id' => 'Store ID',
];
}
public function getofferId()
{
return $this->getPrimaryKey();
}
}
关于我哪里出错了有什么想法吗?当我在填写完其余部分后尝试保存表格时,表格不会提交(我猜这是因为 ID 字段尚未填写)任何帮助将不胜感激!
id
为空,因为您将其设置为 $this->id
,但尚未在任何地方设置。
您可以使用Yii::$app->user->id
获取当前登录的用户。因此,不需要隐藏字段或 id
的规则。您可以使用 ActiveRecord::beforeSave()
手动设置 id
:
public function beforeSave($insert = true) {
if ($insert)
$this->id = Yii::$app->user->id;
return parent::beforeSave($insert);
}