2015-05-07 2 views
0

Я использую Laravel4 с Laravel-степлером для управления изображениями.Как настроить собственный URL-адрес Laravel-степлера

Я проектирую каталог продуктов на веб-сайте, есть две таблицы.

  1. Таблица «Продукт» имеет информацию о продукте, такой как, название продукта, размер продукта, описание продукта и в продукт выделения Изображение.
  2. Таблица «Product_Gallery» имеет неограниченные изображения продукта.

И я поставил модель, как показано ниже,

class Products extends Eloquent implements StaplerableInterface { 
    public function __construct(array $attributes = array()) { 
     $this->hasAttachedFile('product_main_image', [ 
       'styles' => [ 
         'thumb' => ['dimensions' => '100x100#' ],      
         'display' => ['dimensions' => '300x300#' ], 

       ], 
       'url' => '/uploads/product/:id/:style/:filename',     
     ]); 
... 


class ProductGallery extends Eloquent implements StaplerableInterface { 
    public function __construct(array $attributes = array()) { 
     $this->hasAttachedFile('product_gallery', [ 
       'styles' => [ 
         'thumb' => ['dimensions' => '100x100#' ],      
         'gallery' => ['dimensions' => '1024x' ], 

       ], 
       'url' => '/uploads/gallery/:id/:style/:filename',     
     ]); 
... 

Когда я загрузить продукт и с четырьмя галерея файлов, они хранения, как показано ниже,

/uploads/product/1/thumb/aaaa.jpg 
/uploads/gallery/1/thumb/g1.jpg 
/uploads/gallery/2/thumb/g2.jpg 
/uploads/gallery/3/thumb/g3.jpg 
/uploads/gallery/4/thumb/g4.jpg 

Я хотел бы группа загрузка файла в галерее продуктов, например

/uploads/product/1/thumb/aaaa.jpg 
/uploads/product/1/gallery/1/thumb/g1.jpg 
/uploads/product/1/gallery/2/thumb/g2.jpg 
/uploads/product/1/gallery/3/thumb/g3.jpg 
/uploads/product/1/gallery/4/thumb/g4.jpg 

Этот код в контроллере,

$model = new ProductGallery(); 
    $model->fk_id = $product_id; 
    $model->image = Input::file('file'); 
    $pathInfo = pathinfo(Input::file('file')->getClientOriginalName()); 
    $newFilename = 'gallery-' . date("Ymd-") . sha1(time()) . '.' . $pathInfo['extension']; 
    $model->image->instanceWrite('file_name', $newFilename);   
    $model->save(); 

Как конфиг в Laravel-степлер?

+0

Пожалуйста, предоставьте код вашего контроллера, где вы загружаете приложение. –

+0

@ArkarAung Я уже добавляю код контроллера. – punny

ответ

2

В Laravel-stapler для этого еще нет встроенных интерполяций. Но вы можете достичь этого, передав идентификатор продукта через конструктор вашей модели. Попробуйте это ..

В контроллере,

$model = new ProductGallery(array("product_id" => $product_id)); 
$model->fk_id = $product_id; 
$model->image = Input::file('file'); 
$pathInfo = pathinfo(Input::file('file')->getClientOriginalName()); 
$newFilename = 'gallery-' . date("Ymd-") . sha1(time()) . '.' . $pathInfo['extension']; 
$model->image->instanceWrite('file_name', $newFilename);   
$model->save(); 

В модели,

class ProductGallery extends Eloquent implements StaplerableInterface { 
    public function __construct(array $attributes = array()) { 
     $this->hasAttachedFile('product_gallery', [ 
       'styles' => [ 
         'thumb' => ['dimensions' => '100x100#' ],      
         'gallery' => ['dimensions' => '1024x' ], 

       ], 
       'url' => '/uploads/product/'.$attributes['product_id'].'/gallery/:id/:style/:filename',     
     ]); 
... 

Надеется, что это будет полезно для вас.

Смежные вопросы