Activerecord yii2中的ActiveForm名称

Activerecord yii2中的ActiveForm名称,activerecord,yii2,Activerecord,Yii2,我正在使用Yii2和ActiveForm 在正常情况下,如果使用了ActiveForm中的任何输入,则输入的名称应与ActiveRecord属性相同,后者是数据库中相关表列的名称 出于某种原因,我想使用活动的TextArea,它的名称也不同于活动记录属性。实际上,我想获取TextArea的值并分解,然后保存到数据库 有没有办法使用与ActiveRecord属性名称不同的ActiveInput 视图: 型号: public function attributeLabels() { retu

我正在使用
Yii2
ActiveForm

在正常情况下,如果使用了
ActiveForm
中的任何输入,则输入的名称应与
ActiveRecord
属性相同,后者是数据库中相关表列的名称

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

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

视图:

型号:

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;
}

可以,只需在模型类中添加公共属性:

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
}

更简单的方法是使用

\yii\helpers\Html::textarea('the_name_you_need', 'value', options)
这样,您就不必使用ActiveRecord属性


您可以阅读。

您可以发布代码的详细信息,以便人们可以帮助您吗?
public function rules()
{
    ...
    [['myAttribute'], 'safe'],
    [['myAttribute'], 'myCustomFunction'],
    ...
}

public function myCustomFunction($attribute, $params)
{
    // Do explode and assign attribute values here
}
\yii\helpers\Html::textarea('the_name_you_need', 'value', options)