通过 Yii 2 更新时 ActiveForm 中的文件输入问题
Fileinput issue in ActiveForm when updating via Yii 2
我正在使用 Yii2 框架。当我上传单个img时,我的文件上传功能很好用,而当我点击提出的文章时,我只想再次更新post(假设我不想更新img,我只想更新其他内容)。但是当我点击查看时,我发现我上传的文件被替换为一个空值(varchar 类型)。我上传的img显示不出来
我试过自己修复如下,但是当我点击提交按钮时,现有的文件值无法保存。
<?php
if (($post->file) != "") {
echo $form->field($post, 'file')->textInput()->hint('My currently uploaded file')->label('My Photo') ;
}
else{
echo $form->field($post, 'file')->fileInput()->hint('To upload a new file')->label('My Photo') ;
}
?>
当我点击提交按钮时,我现有的文件不见了。
有没有什么好的方法可以解决。
提前感谢您的意见。
将规则添加到您的模型规则中:
[['file'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg'],
并检查控制器中的空上传:
if (Yii::$app->request->isPost) {
$ok = true;
// process your other fields...
...
// process image file only if there is one
$post->file= UploadedFile::getInstance($post, 'file');
if ($post->file && $post->upload()) {
}
if ($ok) {
return $this->redirect(...);
}
}
有关文件上传的详细信息,请参阅Yii2 docs and the Yii2 guide。
在您的模型中使用另一个变量来上传文件。
例如,使用 file_field
名称从提交的文件中获取文件并存储在 file
字段中。
class PostModel extends Model
{
/**
*
* @var UploadedFile
*/
public $file_field;
public function rules() {
return [
['file_field', 'file'],
];
}
}
echo $form->field($post, 'file_field')->fileInput()->hint('To upload a new file')->label('My Photo') ;
$post->file_field = UploadedFile::getInstance($post, 'file_field');
要上传新文件,请检查 file_field
:
if ($post->file_field) {
// $post->file old file
// Save $post->file_field and store name in $post->file
}
我正在使用 Yii2 框架。当我上传单个img时,我的文件上传功能很好用,而当我点击提出的文章时,我只想再次更新post(假设我不想更新img,我只想更新其他内容)。但是当我点击查看时,我发现我上传的文件被替换为一个空值(varchar 类型)。我上传的img显示不出来
我试过自己修复如下,但是当我点击提交按钮时,现有的文件值无法保存。
<?php
if (($post->file) != "") {
echo $form->field($post, 'file')->textInput()->hint('My currently uploaded file')->label('My Photo') ;
}
else{
echo $form->field($post, 'file')->fileInput()->hint('To upload a new file')->label('My Photo') ;
}
?>
当我点击提交按钮时,我现有的文件不见了。 有没有什么好的方法可以解决。 提前感谢您的意见。
将规则添加到您的模型规则中:
[['file'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg'],
并检查控制器中的空上传:
if (Yii::$app->request->isPost) {
$ok = true;
// process your other fields...
...
// process image file only if there is one
$post->file= UploadedFile::getInstance($post, 'file');
if ($post->file && $post->upload()) {
}
if ($ok) {
return $this->redirect(...);
}
}
有关文件上传的详细信息,请参阅Yii2 docs and the Yii2 guide。
在您的模型中使用另一个变量来上传文件。
例如,使用 file_field
名称从提交的文件中获取文件并存储在 file
字段中。
class PostModel extends Model
{
/**
*
* @var UploadedFile
*/
public $file_field;
public function rules() {
return [
['file_field', 'file'],
];
}
}
echo $form->field($post, 'file_field')->fileInput()->hint('To upload a new file')->label('My Photo') ;
$post->file_field = UploadedFile::getInstance($post, 'file_field');
要上传新文件,请检查 file_field
:
if ($post->file_field) {
// $post->file old file
// Save $post->file_field and store name in $post->file
}