我正在尝试显示我存储在数据库中的表单值。但它没有发生并且还返回空值。我添加了我做的任何事情。
控制器
protected function findModel($id)
{
if (($model = UserRegistration::find($id)->one()) !== null) {
return $model;
} else {
throw new NotFoundHttpException('The requested page does not exist.');
}
}
模型
这是我的模型。我已将所有变量声明为public.Is有问题吗?如果我也删除即时错误。
class UserRegistration extends ActiveRecord
{
public $username;
public $firstname;
public $lastname;
public $email;
public $Country;
public $State;
public $City;
public $phone_number;
public $about_me;
public $password;
public $verify_password;
public $photo;
public static function tableName()
{
return 'user';
}
public function rules()
{
return [
[['username','password', 'email'], 'required'],
[['status', 'created_at', 'updated_at', 'teespring_id'], 'integer'],
[['username','lastname','firstname', 'password_hash', 'password_reset_token', 'email','about_me'], 'string', 'max' => 255],
[['auth_key'], 'string', 'max' => 32],
[['role'], 'string', 'max' => 10],
[['email','username'],'email'],
[['email','username','password_reset_token'], 'unique'],
['phone_number','string','length'=>10],
[['Country','State','City'],'string'],
['verify_password','compare','compareAttribute'=>'password'],
[['photo'],'file', 'extensions' => 'png, jpg']
];
}
}
更新:我也试过了$model = UserRegistration::findOne($id)
。没有运气
请帮帮我。
答案 0 :(得分:1)
它是UserRegistration::findOne($id)
而您必须声明来自数据库的属性,因为这些属性为空。
答案 1 :(得分:1)
它看起来很奇怪。对于用户注册,此模型看起来像 ModelForm ,并且它不需要有表格。
我认为你也有用户模型,所以你应该尝试 User :: findOne($ id)
如果您只有一个用户和注册的模型,那么您不应该将表格中的属性设置为公开。
所以你只需要 public $ verify_password ,因为我猜你的表中没有这行。我认为你没有表中的照片行,因为通常照片名称是user_id。在这种情况下,您应该将其设置为公开。
你可以从用户表中获取所有行,这样我就可以为你创建一个合适的模型吗?
答案 2 :(得分:1)
这是错误的。
$model = UserRegistration::find($id)->one()
应该是:
$model = UserRegistration::findOne($id);
或
$model = UserRegistration::find()->where(['id' => $id])->one();
如果$ id被称为'id'字段
答案 3 :(得分:0)
最后我得到了解决方案。我创建了两个findModel并渲染到表单。
public function actionProfile(){
$model = $this->findModel(Yii::$app->user->identity->id);
$profile = $this->findProfileModel(Yii::$app->user->identity->id);
return $this->render('/userregister/update', [
'model' => $model,
'profile'=>$profile,
]);
}
谢谢大家。