gpt4 book ai didi

activerecord - yii2 中的 ActiveForm 名称

转载 作者:行者123 更新时间:2023-12-04 05:01:59 33 4
gpt4 key购买 nike

我正在使用 Yii2ActiveForm
通常,如果 ActiveForm 中的任何输入已被使用,输入的名称应与 ActiveRecord 属性相同,即数据库中相关表的列名称。

出于某种原因我想使用 Active TextArea 并且它的名称也不同于 Active Record 属性。实际上我想获取 TextArea 的 值并分解然后保存到数据库.

有没有办法使用与 ActiveRecord 属性不同名称的 ActiveInput?

查看:

<?php $form = ActiveForm::begin([
'id'=>'import-student',
'options'=>[
'class'=>'form-horizontal',
'enctype'=>'multipart/form-data']
]); ?>

<?= $form->field($model, 'first_name', ['inputOptions'=>[
'placeholder'=>'import Users as text']])
->textArea(['rows'=>'12','class'=>'form-control'])
->label(false); ?>
<?= Html::submitButton('Submint', ['class'=>'btn btn-primary']) ?>

<?php ActiveForm::end(); ?>

Controller :

public function actionImport()
{
$model = new Student();

if ($model->load(Yii::$app->request->post()) && $users = $model->saveTextArea()) {
Yii::$app->session->setFlash('info', print_r($users));
}

return $this->render('import',[
'model'=>$model,
]);
}

型号:

public function attributeLabels()
{
return [
'id' => Yii::t('backend', 'ID'),
'first_name' => Yii::t('backend', 'First Name'),
'last_name' => Yii::t('backend', 'Last Name'),
'user_id' => Yii::t('backend', 'User ID'),
'student_number' => Yii::t('backend', 'Student Number'),
'national_id' => Yii::t('backend', 'National ID'),
'average' => Yii::t('backend', 'Average'),
'vip' => Yii::t('backend', 'Vip'),
'location_id' => Yii::t('backend', 'Location ID'),
];
}
public function SaveTextArea()
{
$users = explode(";", $this->first_name);
foreach ($users as $user){
list($first_name,$last_name,$student_number,$national_id) = explode(";", $user);
}
return $ali;
}

最佳答案

是的,你可以,只需在你的模型类中添加一个公共(public)属性:

class MyClass extends \yii\db\ActiveRecord
{
public $myAttribute;
...

您还需要将其声明为安全属性,并将其输入到您的规则方法中:

public function rules()
{
...
[['myAttribute'], 'safe'],
...

然后您可以使用另一条规则进行任何处理:

public function rules()
{
...
[['myAttribute'], 'safe'],
[['myAttribute'], 'myCustomFunction'],
...
}

public function myCustomFunction($attribute, $params)
{
// Do explode and assign attribute values here
}

关于activerecord - yii2 中的 ActiveForm 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32487963/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com