Здравствуйте, поставил слайдер на сайт, решил сделать загрузку фоток через админку, потом вывести фото в слайдере.
Не могу реализовать загрузку фоток.
Что я сделал.Создал таблицу:
Название таблицы: slyders
Потом добавил в таблицу 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 делалось.
Цель загружать фото, и видеть в этом разделе те что загрузил, после выбора фоток, я нажимаю сохранить на кнопку и идет должна происходить загрузка и идет перезагрузка страницы. но фото нет ни где не в таблице не в папке загрузки.