yii2 загрузка файла
Re: yii2 загрузка файла
Так же как и в примере что вы привели, только использовать нужно "yii\web\UploadedFile".
Re: yii2 загрузка файла
как виджет вызвать или как?vova07 писал(а):Так же как и в примере что вы привели, только использовать нужно "yii\web\UploadedFile".
вот так?
Код: Выделить всё
use yii\web\UploadedFile;
CMultiFileUpload::widget([
'model'=>$model,
'attribute'=>'photos',
'accept'=>'jpg|gif|png',
'denied'=>'File is not allowed',
'max'=>10, // max 10 files
]);
Re: yii2 загрузка файла
Я прошу прощения, бегло посмотрел ссылку, и не заметил что там речь идет о виджете мулти-загрузки.
В данный момент на сколько я знаю, в Yii 2 нет подобного виджета, по этому делать нужно будет самостоятельно. Хотя судя по скрипту на основе которого работает мулти-загрузочный виджет в Yii 1, его удаление оправдано.
В данный момент на сколько я знаю, в Yii 2 нет подобного виджета, по этому делать нужно будет самостоятельно. Хотя судя по скрипту на основе которого работает мулти-загрузочный виджет в Yii 1, его удаление оправдано.
Re: yii2 загрузка файла
подниму тему
в yii есть
как с этим быт в yii2 и как их использовать ? Смотрю вроде setAlias или getAlias
кстати файлы можно загружать как на кокбуке yii1.
в yii есть
Код: Выделить всё
Yii::getPathOfAlias('application.uploads');
кстати файлы можно загружать как на кокбуке yii1.
Re: yii2 загрузка файла
точно так жеasset писал(а):подниму тему
в yii естькак с этим быт в yii2 и как их использовать ? Смотрю вроде setAlias или getAliasКод: Выделить всё
Yii::getPathOfAlias('application.uploads');
кстати файлы можно загружать как на кокбуке yii1.
Re: yii2 загрузка файла
Спасибо. хорошо что док естьSam Dark писал(а):Yii::getAlias('app/uploads')
Re: yii2 загрузка файла
у меня не получается заставить работать FileValidator. У кого-то получилось? я вот даже issue создал, пока правда не ответил никто - https://github.com/yiisoft/yii2/issues/2330
Re: yii2 загрузка файла
Вроде нет там никаких проблем. В виджете fileAPI делал валидацию, все работает.
Как вы сохраняете файлы, что в контролере?
Как вы сохраняете файлы, что в контролере?
Re: yii2 загрузка файла
так в контроллере ничего и не должно быть вроде, все стандартно
Код: Выделить всё
public function actionUpdate($id)
{
$model = $this->loadModel($id, Banner::className());
if ($model->load($_POST) && $model->save()) {
return $this->redirect(['index']);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
Re: yii2 загрузка файла
Код стандартный но есть один момент, в Yii2 'yii\validators\FileValidator' в отличии от Yii1, не делает автоматическое присваивание для проверяемого атрибута. С учетом ваших настроек, вы должны получать ошибку об остутсвии файла, это один. Второй момент может заключатся в вашем методе загрузки файла, так как если это делается после валидации модели, то ошибок в свою очередь никаких не будет, так как сама валидация уже прошла.
П.С. Эти моменты в доках не озвучены, но это не мешает нам посмотреть исходники и понять логику работы.
Кстати вполне возможно что "FileValidator" из-за конкретно данной ситуации нужно улучшить.
П.С. Эти моменты в доках не озвучены, но это не мешает нам посмотреть исходники и понять логику работы.
Кстати вполне возможно что "FileValidator" из-за конкретно данной ситуации нужно улучшить.
Re: yii2 загрузка файла
Раз подняли тему вкладываю код,такой же как на рецепте с некоторым изменением.
controller
model
view
controller
Код: Выделить всё
<?php
namespace app\controllers;
use Yii;
use yii\BaseYii;
use yii\web\UploadedFile;
use app\models\Upload;
class LoadController extends \yii\web\Controller
{
public function actionIndex()
{
$dir = Yii::getAlias('@app/uploads');
$uploaded = false;
$model = new Upload();
if($model->load($_POST)) {
$file = UploadedFile::getInstance($model,'file');
if($model->validate()) {
$uploaded = $file->saveAs($dir . '/' .'test' );
}
}
return $this->render('index',[
'model' => $model,
'uploaded' => $uploaded,
'dir' => $dir,
]);
}
}
Код: Выделить всё
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class Upload extends Model
{
public $file;
public function rules()
{
return [
['file','file','types'=> ['rar']],
];
}
}
Код: Выделить всё
<?php
/**
* @var yii\web\View $this
*/
use yii\helpers\Html;
?>
<h1>load/index</h1>
<p>
Yii2
<?php if($uploaded): ?>
<p> Файл успешно загружен. Проверьте <?php echo $dir ?> . </p>
<?php endif; ?>
<?php echo Html::beginForm('','post',['enctype' => 'multipart/form-data']) ?>
<?php echo Html::error($model,'file') ?>
<?php echo Html::activeFileInput($model,'file') ?>
<?php echo Html::submitButton('Upload') ?>
<?php Html::endForm() ?>
</p>
Re: yii2 загрузка файла
да, я уже разобрался, дело дейтсвительно оказалось в том что теперь надо вручную в контроллере присваивать файл. не думаю, что это более удобно чем в yii-1. Контроллеры будут толще
Re: yii2 загрузка файла
Небольшое уточнение. В связи с последними изменениями вместо
надо писать
Код: Выделить всё
['file','file','types'=> ['rar']]
Код: Выделить всё
['file','file','extensions'=> ['rar']]
-
- Сообщения: 103
- Зарегистрирован: 2014.01.05, 21:08
Re: yii2 загрузка файла
Доброго времени суток! Кто-нибудь использует https://github.com/2amigos/yii2-file-upload-widget. Никак не выходит. При загрузке файла возникает ошибка
Error SyntaxError: Unexpected token <
-
- Сообщения: 103
- Зарегистрирован: 2014.01.05, 21:08
Re: yii2 загрузка файла
Ай, в общем решил таким костылем:FOMINTIMUR писал(а):Доброго времени суток! Кто-нибудь использует https://github.com/2amigos/yii2-file-upload-widget. Никак не выходит. При загрузке файла возникает ошибкаError SyntaxError: Unexpected token <
Код: Выделить всё
<td>
<p class="name">
{% if (file.url) { %}
<a href="{%=file.url%}" title="{%=file.name%}" download="{%=file.name%}" {%=file.thumbnailUrl?'data-gallery':''%}>{%=file.name%}</a>
{% } else { %}
<span>{%=file.name%}</span>
{% } %}
</p>
{% if (file.error!="SyntaxError: Unexpected token <") { %}
<div><span class="label label-danger">Error</span> {%=file.error%}</div>
{% } %}
</td>
<td>
Re: yii2 загрузка файла
Это гениальноКод: Выделить всё
{% if (file.error!="SyntaxError: Unexpected token <") { %} <div><span class="label label-danger">Error</span> {%=file.error%}</div> {% } %}
Re: yii2 загрузка файла
Скажите, пожалуйста, как провести проверку на то что файл прикреплен?
Сделал все по примеру выше, все работает. Но если не прикрепить файл, то метод ->saveAs естественно выводит ошибку. Получается $model->validate отдает true даже если файла нет. если в rules добавить правило [['file',], 'required'], то валидация вообще не проходит ...
Сделал все по примеру выше, все работает. Но если не прикрепить файл, то метод ->saveAs естественно выводит ошибку. Получается $model->validate отдает true даже если файла нет. если в rules добавить правило [['file',], 'required'], то валидация вообще не проходит ...
Re: yii2 загрузка файла
if ($this->File instanceof UploadedFile)