Php URL缩进中传递的id缺失
我试图在服务器上上传文件,要查看上传的文件,我必须将模型id传递给查看操作。在我补充之前一切都很好Php URL缩进中传递的id缺失,php,jquery,yii2,Php,Jquery,Yii2,我试图在服务器上上传文件,要查看上传的文件,我必须将模型id传递给查看操作。在我补充之前一切都很好 'options' => ['enctype'=>'multipart/form-data'] 到我的活动窗体。在我添加它之后,通过URL传递到action视图的id不再显示,我会收到缺少参数的消息。 我正在使用yii2.0.2 创建操作: public function actionCreate() { $model = new SubContent(); if
'options' => ['enctype'=>'multipart/form-data']
到我的活动窗体。在我添加它之后,通过URL传递到action视图的id不再显示,我会收到缺少参数的消息。
我正在使用yii2.0.2
创建操作:
public function actionCreate()
{
$model = new SubContent();
if ($model->load(Yii::$app->request->post()) ) {
//$fileName = $model->id;
$model->save();
$fileName = $model->id;
$files =UploadedFile::getInstance($model,'files');
$files->saveAs( 'uploads/'.$files->getBaseName().'.'.$files->getExtension());
$model->files=$files;
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
表格:
这是我的模型
<?php
namespace frontend\models;
use Yii;
/**
* This is the model class for table "sub_content".
*
* @property integer $id
* @property string $files
* @property integer $sub_id
*
* @property Subjects $sub
*/
class SubContent extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'sub_content';
}
public function rules()
{
return [
[['files', 'sub_id'], 'required'],
[['sub_id'], 'integer'],
[['files'], 'string', 'max' => 255]
];
}
public function attributeLabels()
{
return [
'id' => 'ID',
'files' => 'Files',
'sub_id' => 'Sub ID',
];
}
/**
* @return \yii\db\ActiveQuery
*/
public function getSub()
{
return $this->hasOne(Subjects::className(), ['id' =>
'sub_id']);
}
}
首先-由于2.0.8版无需添加enctype
,因此在添加文件输入
字段时会自动完成
您正在验证$model->save()
是否返回true
,并且该模型似乎未通过验证,因此,$model
未保存,$model->id
未设置
你应该这样做:
public function actionCreate()
{
$model = new SubContent();
if ($model->load(Yii::$app->request->post()) ) {
$model->files = UploadedFile::getInstance($model,'files');
if ($model->save()) {
$model->files->saveAs('uploads/' . $files->getBaseName() . '.' . $files->getExtension());
return $this->redirect(['view', 'id' => $model->id]);
}
}
return $this->render('create', ['model' => $model]);
}
要使其正常工作,您需要在子合同
模型中设置正确的验证规则。验证$model->save()是否返回truei gope后,我该怎么做?您可以回答我*************希望您是什么意思?一切都得到了回答。检查模型验证规则,看看您发布的数据有什么问题。好吧,我明白了,我在yii2方面不够强大,这就是为什么我不知道如何检查模型验证的原因,我很感谢您对这样更改的模型[['files'],'file','skipOnEmpty'=>true],@奥马尔·阿里仍然不工作我的朋友给我看你的错误error@UmarAli我早就知道是怎么回事了,是从
public function actionCreate()
{
$model = new SubContent();
if ($model->load(Yii::$app->request->post()) ) {
$model->files = UploadedFile::getInstance($model,'files');
if ($model->save()) {
$model->files->saveAs('uploads/' . $files->getBaseName() . '.' . $files->getExtension());
return $this->redirect(['view', 'id' => $model->id]);
}
}
return $this->render('create', ['model' => $model]);
}