File Yii2-foreach循环以保存数据库模型中的所有文件路径
您好 我在Yii2中使用多文件上传输入。 multiole文件输入可以很好地保存在名为audio的文件夹中选择的文件。 问题是我无法在foreach循环中将数据库模型Faixas.php中每个文件的名称和路径保存在名为Fichero的字段中 这是我的密码: 控制器: 模型作为一个名为upload的函数保存文件夹中的文件,但要保存在模型->ficheiro中的部分不起作用,您不明白吗?: 最后是呈现输入的视图: 有什么办法可以完成吗? 非常感谢 整个Faixas.php模型类:File Yii2-foreach循环以保存数据库模型中的所有文件路径,file,foreach,model,path,yii2,File,Foreach,Model,Path,Yii2,您好 我在Yii2中使用多文件上传输入。 multiole文件输入可以很好地保存在名为audio的文件夹中选择的文件。 问题是我无法在foreach循环中将数据库模型Faixas.php中每个文件的名称和路径保存在名为Fichero的字段中 这是我的密码: 控制器: 模型作为一个名为upload的函数保存文件夹中的文件,但要保存在模型->ficheiro中的部分不起作用,您不明白吗?: 最后是呈现输入的视图: 有什么办法可以完成吗? 非常感谢 整个Faixas.php模型类: }您似乎在wrog
}您似乎在wrog place中创建了模型。创建一个$model=newfaixas;使用循环。尝试在内部创建
public function upload()
{
if ($this->validate()) {
foreach ($this->files as $file) {
$file->saveAs('audio/' . $file->baseName . '.' . $file->extension);
$model = new Faixas();
$filePath = 'audio/' . $file->baseName . '.' . $file->extension;
$model->ficheiro = $filePath;
$model->save();
}
return true;
} else {
return false;
}
}
解决了。。。已从模型文件中删除规则:
[['files'],'file','skipOnEmpty'=>false,'extensions'=>mp3、ogg、webm','maxFiles'=>30]
现在,foreach循环保存数据库中的每个文件路径
多亏了所有试图找到解决方案的人。它没有奏效$型号->菲切罗继续为空:谢谢你的尝试。它在视野之上。只有2个主要功能。您需要查看所有文件吗?您提到的是数据库模型,我需要检查所有Faixas类模型,不仅是上载函数和规则。如果可以,请在分配后检查内容$model->ficheiro`$model->ficheiro=$filePath;`如果不为空,则问题可能出现在[['files']、'files'、……规则中。如果为空,则问题可能出现在创建操作中的文件分配中。我必须离开计算机,但稍后我会返回。非常感谢。
public function rules()
{
return [
[['nome', 'ficheiro', 'dummy1', 'dummy2', 'dummy3', 'dummy4', 'dummy5'], 'string', 'max' => 255],
[['files'], 'file', 'skipOnEmpty' => false, 'extensions' => 'mp3, ogg, webm', 'maxFiles' => 30],
];
}
public function upload()
{
$model = new Faixas();
if ($this->validate()) {
foreach ($this->files as $file) {
$file->saveAs('audio/' . $file->baseName . '.' . $file->extension);
// this part in not working, why ????
$filePath = 'audio/' . $file->baseName . '.' . $file->extension;
$model->ficheiro = $filePath;
$model->save();
}
return true;
} else {
return false;
}
}
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
<?= $form->field($model, 'files[]')->fileInput(['multiple' => true, 'accept' => 'audio/*']) ?>
<button>Submit</button>
<?php
namespace app\models;
use Yii;
/**
* This is the model class for table "faixas".
*
* @property integer $id
* @property string $nome
* @property string $ficheiro
* @property string $dummy1
* @property string $dummy2
* @property string $dummy3
* @property string $dummy4
* @property string $dummy5
*/
class Faixas extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'faixas';
}
public $files;
/**
* @inheritdoc
*/
public function rules()
{
return [
[['nome', 'ficheiro', 'dummy1', 'dummy2', 'dummy3', 'dummy4', 'dummy5'], 'string', 'max' => 255],
[['files'], 'file', 'skipOnEmpty' => false, 'extensions' => 'mp3, ogg, webm', 'maxFiles' => 30],
];
}
public function upload()
{
if ($this->validate()) {
foreach ($this->files as $file) {
$file->saveAs('audio/' . $file->baseName . '.' . $file->extension);
$model = new Faixas();
// this part in not working, why ????
$filePath = 'audio/' . $file->baseName . '.' . $file->extension;
$model->ficheiro = $filePath;
$model->save();
}
return true;
} else {
return false;
}
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => Yii::t('app', 'ID'),
'nome' => Yii::t('app', 'Nome'),
'ficheiro' => Yii::t('app', 'Ficheiro'),
'dummy1' => Yii::t('app', 'Dummy1'),
'dummy2' => Yii::t('app', 'Dummy2'),
'dummy3' => Yii::t('app', 'Dummy3'),
'dummy4' => Yii::t('app', 'Dummy4'),
'dummy5' => Yii::t('app', 'Dummy5'),
];
}
// coloca o Audio na GridView
public function getAudio()
{
return \Yii::$app->request->BaseUrl.'/'.$this->ficheiro;
}
public function upload()
{
if ($this->validate()) {
foreach ($this->files as $file) {
$file->saveAs('audio/' . $file->baseName . '.' . $file->extension);
$model = new Faixas();
$filePath = 'audio/' . $file->baseName . '.' . $file->extension;
$model->ficheiro = $filePath;
$model->save();
}
return true;
} else {
return false;
}
}