shoppingmallv2 init...

This commit is contained in:
최준흠git config git config --helpgit config --global user.name 최준흠 2023-08-06 06:10:24 +09:00
parent 800e5752dd
commit 3687e73a6c
13 changed files with 101 additions and 71 deletions

View File

@ -6,9 +6,11 @@ use App\Models\BoardModel;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use App\Controllers\Trait\FileTrait;
class BoardController extends AdminController
{
use FileTrait;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
$this->_model = new BoardModel();

View File

@ -6,9 +6,11 @@ use App\Models\ProductModel;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use App\Controllers\Trait\FileTrait;
class ProductController extends AdminController
{
use FileTrait;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
$this->_model = new ProductModel();
@ -45,7 +47,7 @@ class ProductController extends AdminController
{
switch ($field) {
case 'photo':
$this->_viewDatas['fieldDatas'][$field] = $this->upload_photo_procedure($field);
$this->_viewDatas['fieldDatas'][$field] = $this->upload_image_procedure($field);
break;
default:
return parent::getFieldFormData($field, $entity);

View File

@ -5,7 +5,6 @@ namespace App\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\HTTP\CLIRequest;
use CodeIgniter\HTTP\Files\UploadedFile;
use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
@ -37,7 +36,7 @@ abstract class BaseController extends Controller
*
* @var array
*/
protected $helpers = ['Common', 'Base'];
protected $helpers = ['Common'];
/**
* Be sure to declare properties for any property fetch you initialized.
@ -94,58 +93,6 @@ abstract class BaseController extends Controller
return $this->_viewDatas['fieldDatas'];
}
//Upload FIle관련
private function upload_file_process(UploadedFile $upfile)
{
$fileName = null;
if ($upfile->isValid() && !$upfile->hasMoved()) {
$originName = $upfile->getName();
$upfile->move(PATHS['UPLOAD'], $upfile->getRandomName());
//move시 중복된파일명이 있다면 파일명이 바뀌므로 여기서 한번더 파일명 확인 필요
$fileName = $originName . DEFAULTS['DELIMITER_FILE'] . $upfile->getName();
}
return $fileName;
}
private function upload_image_process(UploadedFile $upfile, $sizeX = 100, $sizeY = 100)
{
//참고:https://www.positronx.io/codeigniter-resize-image-with-image-manipulation-tutorial/
$fileName = null;
if ($upfile->isValid() && !$upfile->hasMoved()) {
$originName = $upfile->getName();
$fileName = $upfile->getRandomName();
$image = \Config\Services::image();
$image->withFile($upfile)
->resize($sizeX, $sizeY, true, 'height')
->save(PATHS['UPLOAD_PHOTO'] . $fileName);
$upfile->move(PATHS['UPLOAD_PHOTO'], "original_" . $fileName);
$fileName = $originName . DEFAULTS['DELIMITER_FILE'] . $fileName;
}
return $fileName;
}
protected function upload_file_procedure(string $field)
{
return $this->upload_file_process($this->request->getFile($field));
}
protected function upload_photo_procedure(string $field, $sizeX = 100, $sizeY = 100)
{
return $this->upload_image_process($this->request->getFile($field), $sizeX, $sizeY);
}
protected function upload_multiple_file_process(string $field): array
{
//Multiple파일의경우 html에서는 필드명[]를 넣어야하며
//rule에서 "uploaded[필드명.0]|is_image[필드명]~~" 이런식으로 넣어야함
$fileNames = array();
if ($upfiles = $this->request->getFiles()) {
foreach ($upfiles[$field] as $upfile) {
if ($upfile->isValid() && !$upfile->hasMoved()) {
$fileName = $this->upload_file_process($upfile);
array_push($this->_viewDatas['fieldDatas'][$field], $fileName);
}
}
}
return $fileNames;
}
//초기화
final public function init(string $action, $fields = null)
{

View File

@ -17,7 +17,7 @@ class BoardController extends FrontController
}
public function getFields(string $action = ""): array
{
$fields = ['title', "board_file", "passwd", "content"];
$fields = ['title', "passwd", "content"];
switch ($action) {
case "index":
case "excel":
@ -47,9 +47,6 @@ class BoardController extends FrontController
$this->_viewDatas['fieldDatas'][$field] = $this->request->getVar($field);
$this->_viewDatas['fieldDatas']['confirmpassword'] = $this->request->getVar('confirmpassword');
break;
case 'board_file':
$this->_viewDatas['fieldDatas'][$field] = $this->upload_file_procedure($field);
break;
default:
return parent::getFieldFormData($field, $entity);
break;

View File

@ -0,0 +1,85 @@
<?php
namespace App\Controllers\Trait;
use CodeIgniter\HTTP\Files\UploadedFile;
trait FileTrait
{
//Upload FIle관련
private function upload_file_process(UploadedFile $upfile): string
{
$name = null;
$filename = null;
if ($upfile->isValid() && !$upfile->hasMoved()) {
$name = $upfile->getName();
$filename = $upfile->getRandomName();
$upfile->move(PATHS['UPLOAD'], $filename);
//move시 중복된파일명이 있다면 파일명이 바뀌므로 여기서 한번더 파일명 확인 필요
$filename = $upfile->getName();
}
return $name . DEFAULTS['DELIMITER_FILE'] . $filename;
}
public function upload_file_procedure(string $field): string
{
return $this->upload_file_process($this->request->getFile($field));
}
public function upload_multiple_file_procedure(string $field): array
{
//Multiple파일의경우 html에서는 필드명[]를 넣어야하며
//rule에서 "uploaded[필드명.0]|is_image[필드명]~~" 이런식으로 넣어야함
$files = array();
if ($upfiles = $this->request->getFiles()) {
foreach ($upfiles[$field] as $upfile) {
if ($upfile->isValid() && !$upfile->hasMoved()) {
array_push($files, $this->upload_file_process($upfile));
}
}
}
return $files;
}
private function image_resize_process(UploadedFile $upfile, $filename, $x = 25, $y = 25)
{
$image = \Config\Services::image();
$image->withFile($upfile)
->resize($x, $y, true, 'height')
->save(PATHS['UPLOAD_PHOTO'] . $filename);
}
private function upload_image_process(UploadedFile $upfile): string
{
//참고:https://www.positronx.io/codeigniter-resize-image-with-image-manipulation-tutorial/
$name = null;
$filename = null;
if ($upfile->isValid() && !$upfile->hasMoved()) {
$name = $upfile->getName();
$filename = $upfile->getRandomName();
$this->image_resize_process($upfile, "small_" . $filename);
$this->image_resize_process($upfile, "middle_" . $filename, 50, 50);
$this->image_resize_process($upfile, "large_" . $filename, 100, 100);
$upfile->move(PATHS['UPLOAD_PHOTO'], $filename);
//move시 중복된파일명이 있다면 파일명이 바뀌므로 여기서 한번더 파일명 확인 필요
$filename = $upfile->getName();
}
return $name . DEFAULTS['DELIMITER_FILE'] . $filename;
}
public function upload_image_procedure(string $field): string
{
return $this->upload_image_process($this->request->getFile($field));
}
public function upload_multiple_image_procedure(string $field): array
{
//Multiple파일의경우 html에서는 필드명[]를 넣어야하며
//rule에서 "uploaded[필드명.0]|is_image[필드명]~~" 이런식으로 넣어야함
$names = array();
if ($upfiles = $this->request->getFiles()) {
foreach ($upfiles[$field] as $upfile) {
if ($upfile->isValid() && !$upfile->hasMoved()) {
array_push($files, $this->upload_image_process($upfile));
}
}
}
return $names;
}
}

View File

@ -99,7 +99,7 @@ CREATE TABLE shoppingmall.tw_product (
category_uid int(10) UNSIGNED NOT NULL COMMENT '상품분류',
user_uid varchar(36) NULL COMMENT '생산자 정보',
name varchar(255) NOT NULL COMMENT '상품명',
photo varchar(50) NULL COMMENT '이미지',
photo varchar(255) NULL COMMENT '이미지',
cost int(10) UNSIGNED NOT NULL COMMENT '원가',
price int(10) UNSIGNED NOT NULL COMMENT '판매가',
sale int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '할인가',

View File

@ -8,5 +8,4 @@ abstract class BaseEntity extends Entity
{
abstract public function getPrimaryKey();
abstract public function getTitle(): string;
abstract public function getStatus(): string;
}

View File

@ -47,9 +47,9 @@ class ProductEntity extends BaseEntity
{
return $this->attributes['photo'];
}
public function getPhotoBlock()
public function getPhotoFileName($size = 'small')
{
return explode(DEFAULTS['DELIMITER_FILE'], $this->attributes['photo'])[1];
return $size . '_' . explode(DEFAULTS['DELIMITER_FILE'], $this->attributes['photo'])[1];
}
public function getContent()

View File

@ -130,7 +130,7 @@ function getFieldIndex_Row_OrderHelper_Admin($field, $entity, array $viewDatas):
$field,
$field
);
return getFieldForm_OrderHelper($field, $entity->field, $viewDatas, $attributes);
return getFieldForm_OrderHelper($field, $entity->$field, $viewDatas, $attributes);
}
return getFieldView_OrderHelper($field, $entity, $viewDatas);
break;

View File

@ -82,7 +82,8 @@ function getFieldView_ProductHelper($field, $entity, array $viewDatas)
return $value == DEFAULTS['EMPTY'] ? DEFAULTS['EMPTY'] : anchor(current_url() . "/download/{$field}/{$entity->getPrimaryKey()}", ICONS['IMAGE_FILE'] . explode(DEFAULTS['DELIMITER_FILE'], $value)[0], ["target" => "_self"]);
break;
case 'photo':
return "<img src=\"/upload_images/" . $entity->getPhotoBlock() . "\">";
// return $entity->getPhotoFileName();
return "<img src=\"/upload_images/" . $entity->getPhotoFileName() . "\">";
break;
case 'cost':
case 'price':
@ -138,7 +139,7 @@ function getFieldIndex_Row_ProductHelper_Admin($field, $entity, array $viewDatas
$field,
$field
);
return getFieldForm_ProductHelper($field, $entity->field, $viewDatas, $attributes);
return getFieldForm_ProductHelper($field, $entity->$field, $viewDatas, $attributes);
}
return getFieldView_ProductHelper($field, $entity, $viewDatas);
break;

View File

@ -133,7 +133,7 @@ function getFieldIndex_Row_UserSNSHelper_Admin($field, $entity, array $viewDatas
$field,
$field
);
return getFieldForm_UserSNSHelper($field, $entity->field, $viewDatas, $attributes);
return getFieldForm_UserSNSHelper($field, $entity->$field, $viewDatas, $attributes);
}
return getFieldView_UserSNSHelper($field, $entity, $viewDatas);
break;

View File

@ -139,7 +139,7 @@ function getFieldIndex_Row_UserHelper_Admin($field, $entity, array $viewDatas):
$field,
$field
);
return getFieldForm_UserHelper($field, $entity->field, $viewDatas, $attributes);
return getFieldForm_UserHelper($field, $entity->$field, $viewDatas, $attributes);
}
return getFieldView_UserHelper($field, $entity, $viewDatas);
break;

View File

@ -94,9 +94,6 @@ abstract class BaseModel extends Model
case "view_cnt":
$rules[$field] = "if_exist|numeric";
break;
case "upload_file": //uploaded[{$field}] == requried와 같은의미
$rules[$field] = !$action ? "if_exist|string" : "is_image[{$field}]|mime_in[{$field},image/jpg,image/jpeg,image/gif,image/png,image/webp]|max_size[{$field},100]|max_dims[{$field},1024,768]";
break;
case "updated_at":
case "created_at":
case "deleted_at":