我是Yii框架的新手。这是我在相关框架的stackoverflow中的第一篇文章。我的问题是如何在视图页面中显示非模型输入字段。请检查我的控制器并查看代码。
public Bundle getBundle = null;
getBundle = this.getIntent().getExtras();
String id= getBundle.getString("more_id");
more_id.setText(id);
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]);
}
}
<?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(); ?>
我的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列。列为user
,username
和email
,但password
不在我的表格列中。这是一个非模型输入字段。所以我收到错误信息。请帮助我,让我知道如何解决它。
答案 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