Hey there I am beginner in yii2 and learning to create a api in yii2 as I stuck when my request has given me only 1 array of file instead of multiple
Below is my model file
<?php
namespace common\models;
use Yii;
/**
* This is the model class for table "question_attachment".
*
* @property int $id
* @property int $question_id
* @property string $attachment
*/
class QuestionAttachment extends \yii\db\ActiveRecord
{
/**
* {@inheritdoc}
*/
public static function tableName()
{
return 'question_attachment';
}
/**
* {@inheritdoc}
*/
public function rules()
{
return [
[['attachment'], 'required'],
[['question_id'], 'integer'],
//[['attachment'], 'string', 'max' => 255],
[['attachment'], 'file', 'maxFiles' => 10,'skipOnEmpty' => true, 'extensions' => 'png, jpge, jpg, pdf, mp4', 'mimeTypes' => 'image/jpeg, image/png, image/jpe'],
];
}
/**
* {@inheritdoc}
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'question_id' => 'Question ID',
'attachment' => 'Attachment',
];
}
public function getQuestions(){
return $this->hasOne(Question::className(), ['id' => 'id']);
}
}
And This below code is of action in which I am uploading a multiple images
public function actionMultiple($params=['attributes'=>[
['name'=>'QuestionAttachment[attachment]','type'=>'file','description'=>'']],'auth'=>0,'method'=>'POST'])
{
$model = new QuestionAttachment();
$model->question_id = '1';
if (Yii::$app->request->isPost) {
$model->attachment = UploadedFile::getInstances($model, 'attachment');
if(!$model->attachment){
return array('status'=>false,'message'=>'Please select a photo.');
}
if ($model->attachment && $model->validate()) {
foreach ($model->attachment as $file) {
$file->saveAs(Yii::$app->basePath.'/../img_assets/questions/' . $file->baseName . '.' . $file->extension);
}
}
}print_r($model);die();
return array('status' => true, 'message' => 'Error');
}
And this is what i got response for this action code
common\models\QuestionAttachment Object
(
[_attributes:yii\db\BaseActiveRecord:private] => Array
(
[question_id] => 1
[attachment] => Array
(
[0] => yii\web\UploadedFile Object
(
[name] => farcry1.jpg
[tempName] => /tmp/phpUBNOW2
[type] => image/jpeg
[size] => 2648781
[error] => 0
[_tempResource:yii\web\UploadedFile:private] => Array
(
)
)
)
)
[_oldAttributes:yii\db\BaseActiveRecord:private] =>
[_related:yii\db\BaseActiveRecord:private] => Array
(
)
[_relationsDependencies:yii\db\BaseActiveRecord:private] => Array
(
)
[_errors:yii\base\Model:private] => Array
(
)
[_validators:yii\base\Model:private] => ArrayObject Object
(
[storage:ArrayObject:private] => Array
(
[0] => yii\validators\RequiredValidator Object
(
[skipOnEmpty] =>
[requiredValue] =>
[strict] =>
[message] => {attribute} cannot be blank.
[attributes] => Array
(
[0] => attachment
)
[on] => Array
(
)
[except] => Array
(
)
[skipOnError] => 1
[enableClientValidation] => 1
[isEmpty] =>
[when] =>
[whenClient] =>
[_events:yii\base\Component:private] => Array
(
)
[_eventWildcards:yii\base\Component:private] => Array
(
)
[_behaviors:yii\base\Component:private] =>
)
[1] => yii\validators\NumberValidator Object
(
[integerOnly] => 1
[max] =>
[min] =>
[tooBig] =>
[tooSmall] =>
[integerPattern] => /^\s*[+-]?\d+\s*$/
[numberPattern] => /^\s*[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\s*$/
[attributes] => Array
(
[0] => question_id
)
[message] => {attribute} must be an integer.
[on] => Array
(
)
[except] => Array
(
)
[skipOnError] => 1
[skipOnEmpty] => 1
[enableClientValidation] => 1
[isEmpty] =>
[when] =>
[whenClient] =>
[_events:yii\base\Component:private] => Array
(
)
[_eventWildcards:yii\base\Component:private] => Array
(
)
[_behaviors:yii\base\Component:private] =>
)
[2] => yii\validators\FileValidator Object
(
[extensions] => Array
(
[0] => png
[1] => jpge
[2] => jpg
[3] => pdf
[4] => mp4
)
[checkExtensionByMimeType] => 1
[mimeTypes] => Array
(
[0] => image/jpeg
[1] => image/png
[2] => image/jpe
)
[minSize] =>
[maxSize] =>
[maxFiles] => 10
[minFiles] => 0
[message] => File upload failed.
[uploadRequired] => Please upload a file.
[tooBig] => The file "{file}" is too big. Its size cannot exceed {formattedLimit}.
[tooSmall] => The file "{file}" is too small. Its size cannot be smaller than {formattedLimit}.
[tooMany] => You can upload at most {limit, number} {limit, plural, one{file} other{files}}.
[tooFew] => You should upload at least {limit, number} {limit, plural, one{file} other{files}}.
[wrongExtension] => Only files with these extensions are allowed: {extensions}.
[wrongMimeType] => Only files with these MIME types are allowed: {mimeTypes}.
[attributes] => Array
(
[0] => attachment
)
[on] => Array
(
)
[except] => Array
(
)
[skipOnError] => 1
[skipOnEmpty] => 1
[enableClientValidation] => 1
[isEmpty] =>
[when] =>
[whenClient] =>
[_events:yii\base\Component:private] => Array
(
)
[_eventWildcards:yii\base\Component:private] => Array
(
)
[_behaviors:yii\base\Component:private] =>
)
)
)
[_scenario:yii\base\Model:private] => default
[_events:yii\base\Component:private] => Array
(
)
[_eventWildcards:yii\base\Component:private] => Array
(
)
[_behaviors:yii\base\Component:private] => Array
(
)
)
What I am doing wrong in this code?