Kohana, слайдер, подгрузка фоток через админку, как загрузить фото?

Здравствуйте, поставил слайдер на сайт, решил сделать загрузку фоток через админку, потом вывести фото в слайдере.
Не могу реализовать загрузку фоток.

Что я сделал.

Создал таблицу:
Название таблицы: slyders
9a60e797b3524c2a878ac9b8ae730d6b.jpg

Потом добавил в таблицу images поле slyder_id - int99

Создал модель:
Назвал slyder.php
<?php defined('SYSPATH') or die('No direct script access.');

class Model_Slyder extends ORM {
	
protected $_table_name = 'slyders';

protected $_primary_key = 'id';

protected $_db_group = 'default';
	
protected $_has_many = array(
'images' => array(
'model' => 'image',
'foreign_key' => 'slyder_id',
),
);
		
}


Создал шаблон для загрузки:
/application/views/admin/slyder/slyder_index.php
<h2>Слайдер, загрузка фоток</h2>

<form action="/admin/slyder" method="post" class="form-horizontal">

<div class="form-actions">
Фотография не должна быть меньше <strong>1200x270px.</strong><br/>
Размеры фотографий в слайдере <strong>1200x270px</strong>. </div>

<div class="form-actions">
<input name="images[]" type="file" multiple id="multi" title="Загрузка фотографий" class="btn btn-success"/>
</div>

<br/>

<? if (!empty($data->images)): ?>
<a name="img"></a>

<? foreach ($data->images as $i => $image): ?>
<div class="fotoadmi1n">
<div class="fotoadminnn1">
<?= html::anchor('media/uploads/slyder/' . $image->name, html::image('media/uploads/slyder/' . $image->name), array('target' => '_blank')) ?>
<br><?= html::anchor('admin/slyder/delimg/' . $image->id, 'Удалить') ?>
</div>
</div>
<? if ($i % 2): ?>

<? endif ?>
<? endforeach ?>

<? else: ?>
<!--<div class="empty">Нет изображений</div>-->
<? endif ?>

<div style="clear:both"></div>
    
<div class="form-actions" style="display:inline-block">
<div style="margin-top: 0px; margin-bottom: -4px">
<button type="submit" name="submit" id="submit" class="btn btn-primary">СОХРАНИТЬ</button>
</div>
</div>
</form>


Далее создал контроллери и т.д:
/application/classes/controller/admin
slyder.php
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Admin_Slyder extends Controller_Admin {

public function before() {
parent::before();
		
$this->template->page_title = 'Настройки слайдера, загрузка фоток';
		
// для загрузки фоток
$this->template->scripts[] = 'media/js/jquery-1.7.2.min.js';
$this->template->scripts[] = 'media/js/jquery.MultiFile.pack.js';
$this->template->scripts[] = 'media/js/upload.js';
}

public function action_index() {
		
$slyders = ORM::factory('slyder')->where('id', '=', '1')->find();

$data = $slyders->as_array();
$data['images'] = $slyders->images->find_all()->as_array();

if (isset($_POST['submit']))
{
$data = Arr::extract($_POST, array('contemail', 'conttell', 'contskype'));
$slyders->values($data);
$slyders->save();	

if (!empty($_FILES['images']['name'][0])) {
foreach ($_FILES['images']['tmp_name'] as $i => $image) {
$filename = $this->_upload_img($image, strtolower(substr(strrchr($_FILES['images']['name'][$i], '.'), 1)));
if ($filename) {
$im_db = ORM::factory('image');
$im_db->slyder_id = $slyders->pk();
$im_db->name = $filename;
$im_db->save();
}
}
}
}
               
$content = View::factory('admin/slyder/slyder_index')
->bind('data', $slyders);
				
$this->template->page_title = 'Настройки слайдера, загрузка фоток';
$this->template->content = $content;
}



public function _upload_img($file, $ext = NULL, $directory = NULL)
{

if ($directory == NULL) {
$directory = 'media/uploads/slyder';
$smalldirectory = 'media/uploads/slyder/small/';
}
if ($ext == NULL) {
$ext = 'jpg';
}
$symbols = '0123456789abcdefghijklmnopqrstuvwxyz';
$filename = '';
for ($i = 0; $i < 10; $i++) {
$filename .= rand(1, strlen($symbols));
}
$im = Image::factory($file);
if ($im->width < 350 OR $im->height < 350) {
return false;
} else {
$im->resize(1000, 800);
$im->save("$directory/$filename.$ext");
$im->resize(350, 197, Image::INVERSE);
$im->crop(350, 197);
$im->save("$smalldirectory/small_$filename.$ext");
return "$filename.$ext";
}
}

}


Так же сделал папку для загрузки фоток:
/media/uploads/slyder/
установил права 777

В сам раздел в админке захожу, выбираю фото и пытаюсь загрузить и ничего не загружает.
Смотрю таблицу там пусто.

Именно проблема с загрузкой фото, пытался по другим методам сделать но не загружает и ошибок не пишет.
Подскажите что я не так сделал, может что-то не так поставил местами.
Может что-то в код загрузки фото нужно добавить чтобы сохранение на id 1 делалось.

Цель загружать фото, и видеть в этом разделе те что загрузил, после выбора фоток, я нажимаю сохранить на кнопку и идет должна происходить загрузка и идет перезагрузка страницы. но фото нет ни где не в таблице не в папке загрузки.
  • Вопрос задан
  • 410 просмотров
Пригласить эксперта
Ответы на вопрос 1
все просто, кажется
<form enctype="multipart/form-data">...</form>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы