Hola a todos comunidad, tengo un problema ,estoy tratando de subir un archivo a mi app , recibo los datos y los leo en un array de objetos y necesito guardar uno de sus elementos (el nombre ), (lo cual puedo ver si hago var_dump o lo retorno ) , pero al momento de guardar y poner mis datos en el modelo me dice que el objeto del array que estoy usando no es un objeto . Si alguien me puede guiar por mi duda se lo agradecería muchisimo. de igual manera Gracias.
Acá les dejo mi vista
<div class="d-md-flex justify-content-center align-content-center flex-column py-5 text-center">
<h1><?= Html::encode($this->title) ?></h1>
<div class="upload-icon d-md-flex flex-row align-self-center justify-content-center">
<i class="fas fa-file-upload"></i>
</div>
<div>
<p>Arrastra tu documento para poder enviarlo</p>
<p class="text-muted">Tú documento ser privado hasta le momento en que decidas enviarlo</p>
<?php ActiveForm::begin(
[
'options' => ['enctype' => 'multipart/form-data' ]
]) ?>
<button class="btn btn-primary btn-file">
selecciona tu documento
<input type="file" name="documento" id="archivoDocumento">
</button>
<?php ActiveForm::end() ?>
</div>
Acá mi controlador
public function actionCreate()
{
$model = new Documento();
// $documento = UploadedFile::getInstanceByName('documento');
$this->documento = UploadedFile::getInstanceByName('documento');
echo'<pre>';var_dump($this->documento->name);
foreach ($this->documento as $key => $value) { //hice esto para ver si así podía pasar mi dato pero no tive éxito
$model->nombre_documento = $this->documento->name;
if($key == "name"){
$nombre = $model->nombre_documento ;
}
}
// echo'<pre>';var_dump($documento);echo'<pre>';die;
if (Yii::$app->request->isPost && $model->save()) {
return $this->redirect(['view', 'id' => $model->id_documento]);
}
// echo'<pre>';var_dump(Yii::$app->request->isPost);echo'<pre>';exit();
return $this->render('create', [
'model' => $model,
]);
}
Y acá mi modelo en donde estoy haciendo una función donde podré crear y guardar mi carpeta donde irán mis archivos
public function save($runValidation = true, $attributeNames = null)
{
$insert = $this->isNewRecord;
if ($insert) {
var_dump($this->documento);
$this->id_documento = Yii::$app->security->generateRandomString(15);
}
// return parent::save($runValidation, $attributeNames);
$saved = parent::save($runValidation, $attributeNames);
if (!$saved) {
return false;
}
if ($insert) {
$videoPath = Yii::getAlias('@frontend/web/storage/documento/' . $this->id_documento . '.pdf');
if(!is_dir(dirname($videoPath))) {
FileHelper::createDirectory(dirname($videoPath));
}
$this->documento->saveAs($videoPath);
}
return true;
}
Estoy intentando pasar “$this->documento->name” a mi modelo para poder guardarlo pero no se como pasar una variable de mi controlador a mi modelo, nuevamente gracias a quien pueda ayudarme.