
一个模型:
class KakiKingModel extends ActiveRecord { public $uploadedfiles; public function rules() { return [ [['uploadedfiles'],'file','extensions' => 'txt','checkExtensionByMimeType' => false,'skipOnEmpty' => true,'maxfiles' => 2]]; } ... 控制器:
use yii\web\Uploadedfile;...public function actionUpload() { $model = new KakiKingModel; $t = new KakiKingModel; if (Yii::$app->request->isPost) { $files = Uploadedfile::getInstances($model,'uploadedfiles'); $t = []; $i = 0; foreach ($files as $i => $file) { $t[$i] = new KakiKingModel; $t[$i]->contentUploadedfile = file($file->tempname); $t[$i]->assign(); // assign file content to model attributes $i++; } if (Model::valIDateMultiple($t)) { foreach ($t as $item) { $item->save(false); } return $this->redirect(['index']); } else { return $this->render('upload',[ 'model' => $model,'t' => $t,]); } } return $this->render('upload',[ 'model' => $model,]);} 视图:
$form = ActiveForm::begin([ .... 'options' => ['enctype' => 'multipart/form-data'],... <?= $form->fIEld($model,'uploadedfiles[]')->fileinput(['multiple' => true]) ?>
问题是,它也接受任何其他类型的文件!这是为什么?我究竟做错了什么?谢谢!
更新:我已经改变了我的内容,以便您可以更好地理解为什么我发现它令人不安它不起作用.它应该工作恕我直言.你能帮我么?谢谢!
我认为这个问题有两个常见原因:
1)确保添加正确的enctype以便将文件发送到服务器:
use yii\Widgets\ActiveForm;...<?PHP $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
2)yii\validators\FileValidator(aliased with file)仅适用于yii\web\UploadedFile类实例(它是PHP本机超全局$_FILES数组的抽象),请确保在验证之前为属性分配正确的值.
对于单个文件使用\yii\web\UploadedFile::getInstance():
use yii\web\Uploadedfile;...$this->file = Uploadedfile::getInstance($this,'file');
对于多个文件,请使用\yii\web\UploadedFile::getInstance():
use yii\web\Uploadedfile;...$this->files = Uploadedfile::getInstances($this,'files');
这可以在调用$model-> save()或$model-> valIDate()之前或在beforeValIDate()事件处理程序中完成:
/** * @inheritdoc */public function beforeValIDate(){ $this->files = Uploadedfile::getInstances($this,'files'); return parent::beforeValIDate();} 总结 以上是内存溢出为你收集整理的表单 – yii2规则不适用于非db属性?全部内容,希望文章能够帮你解决表单 – yii2规则不适用于非db属性?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)