№6 Dars — Faylni yuklash va namoyish qilish.
Web texnologiyasi olamida fayllar ro`li juda keng. Shuning uchun ham web dasturlar bunga alohida etibor qaratib kelishgan. Shu jumladan Yii ning o`zining qoida va uslublariga ega. Bir kichik misol orqali bu ishlar qanday amalga oshirilishini ko`rsatishga ruxsat bergaysiz. Buning uchun biz misolimizda rasmlarni yuklashga etiborimizni qaratamiz va shu yuklangan rasmni o`qib olish masalasini ham birgalikda ko`rgan bo`lamiz.
Birinchi navbatda biz qanday qilib fayl yuklashni ko`rib chiqamiz buning uchun jadvalimiz hosil qilingan bo`lishi kerak. Chunki ma`lumotlarni qayerdadir saqlashimiz kerak. Demak jadval yaratishdan boshlaymiz.
CREATE TABLE `pictures` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `pictures` VARCHAR(100) NULL DEFAULT NULL, `description` VARCHAR(100) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB
Va shu jadvalga mos model hosil qilamiz.
Hosil bo`lgan modelimizdagi tekshiruv qoidasiga quyidagicha kod qo`shamiz.
class Pictures extends CActiveRecord {
public function rules(){
return array(
//устанавливаем правила для файла, позволяющие загружать
// только картинки!
array('pictures', 'file', 'types'=>'jpg, gif, png'),
);
}
}
Keyin controllerimizda quyidagicha kod aniqlaymiz, bu kod bizga faylni yuklab olishimiz va jadvalga ma`lumot qo`shishimiz uchun kerak bo`ladi.
class SiteController extends CController {
public function actionCreate(){
$model = new Pictures;
if(isset($_POST['Pictures']))
{
$model->attributes = $_POST['Pictures'];
$uploadedFile = CUploadedFile::getInstance($model,'pictures');
$fileName = $uploadedFile;
$model->pictures = $fileName;
if($model->save())
{
$model->pictures->saveAs(
Yii::getPathOfAlias('webroot').'/images/uploaded/'.$fileName
);
}
}
$this->render('create', array('model'=>$model));
}
}
Endi viewimizni hosil qilamiz.
'multipart/form-data')); ?>
10,'cols'=>25)); ?>
Izoh: Fayl yuklayotgan vaqtda faqatgina uning tipini emas balki o`lchamini ham etiborga oladi. Bizning quyidagi misol uchun 1MB dan katta bo`lmagan faylni yuklay oladi.
public function rules(){
return array(
array('image', 'file', 'types'=>'jpg, gif, png', 'maxSize' => 1048576),
);
}
Validatorlar haqida yanada chuqurroq bilmoqchi bo`lsangiz CFileValidator gipermurojaat orqali tanishishingiz mumkin.
Endi faylni yuklab olganimizdan keyin uni ekranga chiqarish masalasini ko`rib chiqamiz. Contrllerimizga quyidagicha kod yozamiz:
public function actionView()
{
// Jadvaldagi barcha ma`lumotlarni olish
$model = Pictures::model()->findAll();
$this->render('view', array('model'=>$model));
}
Barcha ma`lumotlarni yig`gandan keyin view pagiga jo`natmoqda. View pagimiz quyidagicha ko`rinishga ega bo`ladi:
";
echo "
".$value->description."
«;
}
?>
Endi siz View actioniga murojaat qilsangiz barcha yuklangan ma`lumotlariningiz ekranda namoyon bo`ladi.
Ilmga bo`lgan chanqoqligingiz sizni tark etmasin. E`tiboringiz uchun raxmat!
Manba:
Web Dasturlash
№6 Dars — Faylni yuklash va namoyish qilish.