异常(未知属性)' yii \ base \ UnknownPropertyException'消息'获取未知属性:app \ models \ User :: repeat_password'

时间:2017-03-31 12:11:42

标签: php forms yii2

我是Yii框架的新手。这是我在相关框架的stackoverflow中的第一篇文章。我的问题是如何在视图页面中显示非模型输入字段。请检查我的控制器并查看代码。

控制器

  public Bundle getBundle = null;
getBundle = this.getIntent().getExtras(); 
  String id= getBundle.getString("more_id");
more_id.setText(id);

次(entry.php)

public function actionRegister() {
    $model = new User();
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        //Insert data code here...
        return $this->render('entry-confirm', ['model' => $model]);
    } else {
        return $this->render('entry', ['model' => $model]);
    }
}

模型(user.php的)

<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>

<?= $form->field($model, 'username') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= $form->field($model, 'repeat_password')->passwordInput() ?>

<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>

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

输出

enter image description here

我的namespace app\models; use Yii; class User extends \yii\db\ActiveRecord { public static function tableName() { return 'user'; } public function rules() { return [ [['username', 'password', 'email'], 'required'], [['username', 'password', 'email'], 'string', 'max' => 128], ['email', 'email', 'message' => "The email isn't correct"], ['email', 'unique', 'message' => 'Email already exists!'], ['repeat_password', 'required'], [['repeat_password'], 'string', 'min'=>6, 'max'=>40], ['password', 'compare', 'compareAttribute'=>'repeat_password'], ]; } public function attributeLabels() { return [ 'id' => 'ID', 'username' => 'Username', 'password' => 'Password', 'email' => 'Email', ]; } } 表中有3列。列为userusernameemail,但password不在我的表格列中。这是一个非模型输入字段。所以我收到错误信息。请帮助我,让我知道如何解决它。

2 个答案:

答案 0 :(得分:1)

您必须将新的公共属性添加到User.php(模型类文件)

class User extends ActiveRecord
{
    public $repeat_password;

请参阅第一个

http://www.yiiframework.com/doc-2.0/guide-structure-models.html http://www.yiiframework.com/doc-2.0/guide-start-forms.html

这不会花费太多时间。

不要忘记在rules User.php方法中添加验证规则 http://www.yiiframework.com/doc-2.0/guide-structure-models.html#safe-attributes

答案 1 :(得分:1)

问题与您使用

的事实有关
  <?= $form->field($model, 'repeat_password') ?>

用户模型不存在..

你应该创建一个FormModel(例如:UserInput以及这个repeat_password字段)来管理正确的输入,然后在行动中正确管理你的formModel / UserInput模型和商店的用户模型

要构建适当的表单模型类,您可以查看本指南http://www.yiiframework.com/doc-2.0/guide-start-forms.html