dev-master
9999999-devΠ‘Π΅ΡΠ²ΠΈΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠ΅Π· ΡΡΠ΅ΠΉΡΡ.
The Requires
Wallogit.com
2017 © Pedro PelΓ‘ez
Π‘Π΅ΡΠ²ΠΈΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠ΅Π· ΡΡΠ΅ΠΉΡΡ.
ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Imagine Extension for Yii 2, (*1)
Π composer.json, (*2)
"require": {
"bubogumy/imageuploader": "dev-master"
}
Π ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ composer require bubogumy/imageuploader, (*3)
'imageUploader' => [
'class' => 'bubogumy\imageService',
'url' => '',
'staticUrl' => 'http://localhost/web',
'baseUploadPath' => ''
],
'upload' => 'bubogumy\UploadAction'
Π Π½ΡΠΆΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ, (*4)
$model = new UserProfile();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->goBack();
}
return $this->render('index', [
'model' => $model,
]);
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π² ActiveRecord, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ² Π½Π° ΡΡΠ΅ΠΉΡ UploadTrait ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ UploadInterface Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅. Π’Π°ΠΊ ΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΡ., (*5)
ΠΠ°Π΅ΠΌ ΠΏΡΠ°Π²Π° Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΎΠΊ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ., (*6)
Π€Π°ΠΉΠ» clear-temp ΡΠΈΡΡΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΏΠΊΡ temp, (*7)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠΎΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ:, (*8)
namespace app\models;
use bubogumy\UploadInterface;
use bubogumy\UploadTrait;
use yii\db\ActiveRecord;
/**
* This is the model class for table "lang_data.user_profile".
*
* @property int $id
* @property string $name
* @property string $logo
* @property string $logo_prev
*/
class UserProfile extends ActiveRecord implements UploadInterface
{
use UploadTrait;
public $filename;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'lang_data.user_profile';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['name', 'logo', 'logo_prev'], 'string', 'max' => 255],
];
}
/**
* @inheritdoc
*/
public function userFind()
{
UserProfile::find()
->all();
}
/**
* @return array
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'name' => 'Name',
'logo' => 'Logo',
'logo_prev' => 'Logo Prev',
];
}
/**
* ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
*
* @return int
*/
public function getUserId()
{
return 1;
}
/**
* ΠΠ΄ΡΠ΅Ρ Π΄ΠΎ ΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
*
* @return string
*/
public function pathSettings()
{
return '/profile_logo/src/';
}
/**
* @return bool
*/
public function beforeUploadEvent()
{
return true;
}
/**
* ΠΠ΄ΡΠ΅Ρ Π½Π° ΠΏΡΠ΅Π²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ
*
* @return string
*/
public function pathPreviewSettings()
{
return '/profile_logo/preview/';
}
/**
* ΠΡΡΠΈΠ±ΡΡ ΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
*
* @return string
*/
public function attributeSettings()
{
return 'logo';
}
/**
* ΠΡΡΠΈΠ±ΡΡ ΠΏΡΠ΅Π²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
*
* @return string
*/
public function attributePreviewSettings()
{
return 'logo_prev';
}
/**
* ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΈΠ· Π±Π΄ Π΄ΠΎ ΡΡΡΡΠ°
*
* @return string
*/
public function getFileSettings()
{
return $this->logo;
}
/**
* ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΈΠ· Π±Π΄ Π΄ΠΎ ΠΏΡΠ΅Π²ΡΡ
*
* @return string
*/
public function getFilePreviewSettings()
{
return $this->logo_prev;
}
/**
* ΠΠΎΠ΄ΠΏΠΈΡΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΡ
*/
public function init()
{
$this->subscribeEvent();
parent::init();
}
}
Π index.php ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ $model = new bubogumy\UserProfile();
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ jQuery Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ajax Π·Π°ΠΏΡΠΎΡΠΎΠ²
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΎΡΠΌΡ, (*9)
<form enctype="multipart/form-data" method="post" action="/site/upload" id="form">
<input type="file" name="file">
<input type="hidden" name="_csrf" value="<?=Yii::$app->request->getCsrfToken()?>" />
<input type="submit" value="ΠΠ°Π³ΡΡΠ·ΠΈΡΡ" class="btn">
</form>
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Ajax, (*10)
<script>
$(function(){
$('#form').on('submit', function(e){
e.preventDefault();
var $that = $(this),
formData = new FormData($that.get(0));
$.ajax({
url: $that.attr('action'),
type: $that.attr('method'),
contentType: false,
processData: false,
data: formData,
dataType: 'html',
success: function(form){
if(form){
$that.replaceWith(form);
}
}
});
});
});
</script>
ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΡΠ΅ΡΠ²Ρ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ, (*11)
<?php if (isset($fileUrl)) :?>
<?php $form = ActiveForm::begin(['action' => ['index']]); ?>
<img src="<?= $fileUrl ?>" height="100px">
<?= $form->field($model, 'logo')->hiddenInput(['value' => $filename]) ?>
<?= $form->field($model, 'logo_prev')->hiddenInput(['value' => $filename]) ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
<?php endif; ?>
Π‘Π΅ΡΠ²ΠΈΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠ΅Π· ΡΡΠ΅ΠΉΡΡ.