我有一个用户可以加载图像的表单。在我的控制器中,我有一个名为 actionUpdate 的动作,其中包含这样的代码 的控制器
public function actionUpdate()
{
$id = Yii::$app->user->id;
$model = Page::find()->where(['user_id'=>$id])->one();
if ($model->load(Yii::$app->request->post()))
{
$image = UploadedFile::getInstance($model, 'thumbnail');
$model->thumbnail = $model->url.".".$image->extension;
if ($model->validate() && $model->save())
{
$model->upload();
//page/url is for the user's page
return $this->redirect('page/'.$model->url);
}
}
else
{
//'update' is a view file with form
return $this->render('update', [
'model' => $model,
]);
}
}
当我提交表单时,我被重定向到相同的更新操作网址,但屏幕为空白,而不是重定向到用户的页面。也许问题出在我的模型上传功能中?
的模型
public function upload()
{
if ($this->validate()) {
$user = Page::find()->where(["user_id" => Yii::$app->user->id])->one();
$this->thumbnail->saveAs('avatars/'.$user->url.'.'.$this->thumbnail->extension);
return true;
} else {
return false;
}
}
答案 0 :(得分:2)
也可能是您的验证或保存不返回true
if ($model->validate() && $model->save())
{
$model->upload();
//page/url is for the user's page
return $this->redirect('page/'.$model->url);
} else {
var_dump('not validated or not saved ')
}
答案 1 :(得分:1)
请在您的模型中进行异常处理(尝试,捕获)。永远不要在没有异常处理的情况下编写Model。
在你的机器中配置yii_logger db(你可以找到Yii2文档)。
然后运行
SELECT FROM_UNIXTIME(log_time, '%Y-%m-%d') log_date, y.* FROM yii_logger y where level = 1 order by log_time desc limit 20;
如果您的代码在某个地方出现故障,您可能会看到错误回溯。
答案 2 :(得分:0)
更新actionUpdate中的代码
$model->upload($image);
并在您的模型上传功能
public function upload($image)
{
if ($this->validate()) {
$user = Page::find()->where(["user_id" => Yii::$app->user->id])->one();
// updated with parameter here
$image->saveAs('avatars/'.$user->url.'.'.$image->extension);
return true;
} else {
return false;
}
}
请在您的代码中更新此内容并进行检查。