shoppingmallv2 init...

This commit is contained in:
최준흠 2023-08-18 17:42:29 +09:00
parent cde478771c
commit db90d56cb5
4 changed files with 68 additions and 52 deletions

View File

@ -40,6 +40,19 @@ class UserController extends AdminController
break;
}
}
protected function getFieldRule(string $field, array $rules, string $action = ""): array
{
switch ($field) {
case 'role':
//checkbox형태로 들어오면 $fieldDatas['role']가 array이기때문에
$rules[$field . '.*'] = "required|in_list[master,director,cloudflare,manager,gold,silver,brone,vip,user]";
break;
default:
$rules = parent::getFieldRule($field, $rules, $action);
break;
}
return $rules;
}
public function getFieldFilters(): array
{
return ["role", "status"];
@ -48,21 +61,4 @@ class UserController extends AdminController
{
return parent::getFieldBatchFilters();
}
protected function insert_validate()
{
$rules = [];
foreach ($this->_viewDatas['fieldRules'] as $field => $rule) {
switch ($field) {
case 'role':
//checkbox형태로 들어오면 $fieldDatas['role']가 array이기때문에
$rules[$field . '.*'] = $rule;
break;
default:
$rules[$field] = $rule;
break;
}
}
parent::insert_validate();
}
}

View File

@ -47,6 +47,7 @@ abstract class BaseController extends Controller
/**
* Constructor.
*/
private $_validation = null;
protected $_model = null;
protected $_session = null;
protected $_viewPath = '';
@ -58,6 +59,7 @@ abstract class BaseController extends Controller
// Preload any models, libraries, etc, here.
// E.g.: $this->session = \Config\Services::session();
$this->_session = \Config\Services::session();
$this->_validation = \Config\Services::validation();
$this->_viewDatas['session'] = $this->_session;
//사용자 기본 Role 지정
$this->_viewDatas[SESSION_NAMES['ISLOGIN']] = false;
@ -171,21 +173,16 @@ abstract class BaseController extends Controller
}
protected function insert_validate()
{
//fieldData Rule 검사
//추후 VersionUP용
// $this->_model->getValidation($this->getFields());
// if (! $this->_validation->run($user)) {
// throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
// }
//fieldData Rule 검사
if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//fieldData 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field);
}
$this->_validation->setRules($this->_viewDatas['fieldRules']);
if (!$this->_validation->run($this->_viewDatas['fieldDatas'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->_validation->getErrors()));
}
}
protected function insert_process()
{
@ -232,20 +229,17 @@ abstract class BaseController extends Controller
}
protected function update_validate($entity)
{
//fieldData Rule 검사
//추후 VersionUP용
// $this->_model->getValidation($this->getFields());
// if (! $this->_validation->run($user)) {
// throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
// }
if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//fieldData 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity);
}
$this->_validation->setRules($this->_viewDatas['fieldRules']);
if (!$this->_validation->run($this->_viewDatas['fieldDatas'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->_validation->getErrors()));
}
//변견된 데이터 Log로 남기기
foreach ($this->_viewDatas['fieldDatas'] as $field => $value) {
if ($field != "passwd") { //보안위험성이 있으므로 passwd는 Log에 남기지 않는다.
@ -308,14 +302,16 @@ abstract class BaseController extends Controller
}
protected function reply_validate($entity)
{
if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//fieldData 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity);
}
$this->_validation->setRules($this->_viewDatas['fieldRules']);
if (!$this->_validation->run($this->_viewDatas['fieldDatas'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->_validation->getErrors()));
}
}
protected function reply_process($entity)
{
@ -344,14 +340,16 @@ abstract class BaseController extends Controller
//Toggle 관련
protected function toggle_validate($entity)
{
if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//fieldData 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity);
}
$this->_validation->setRules($this->_viewDatas['fieldRules']);
if (!$this->_validation->run($this->_viewDatas['fieldDatas'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->_validation->getErrors()));
}
}
protected function toggle_process($entity)
{
@ -378,14 +376,16 @@ abstract class BaseController extends Controller
//Batchjob 관련
protected function batchjob_validate($entity)
{
if (!$this->validate($this->_viewDatas['fieldRules'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->validator->getErrors()));
}
//fieldData 적용
$this->_viewDatas['fieldDatas'] = array();
foreach ($this->_viewDatas['fields'] as $field) {
$this->_viewDatas['fieldDatas'] = $this->getFieldFormData($field, $entity);
}
$this->_validation->setRules($this->_viewDatas['fieldRules']);
if (!$this->_validation->run($this->_viewDatas['fieldDatas'])) {
throw new \Exception("{$this->_viewDatas['title']}의 검증 오류발생\n" . implode("\n", $this->_validation->getErrors()));
}
}
protected function batchjob_process($entity)
{

View File

@ -40,16 +40,16 @@ class CardController extends BillingController
$rules[$field] = 'required|in_list[00,01]';
break;
case "card_number":
$rules[$field] = 'required|regex_match[/^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}/]';
$rules[$field] = 'required|regex_match[/^[0-9]{4}[\/-][0-9]{4}[\/-][0-9]{4}[\/-][0-9]{4}/]';
break;
case "card_expiration":
$rules[$field] = 'required|regex_match[/^[1-12]{2}-[0-9]{4}/]';
$rules[$field] = 'required|regex_match[/^[0-9]{4}[\/-](0[0-9]|1[0-2])/]';
break;
case "email":
$rules[$field] = 'required|valid_email';
break;
case "phone":
$rules[$field] = 'required|regex_match[/^[0-9]{3}-[0-9]{4}-[0-9]{4}/]';
$rules[$field] = 'required|regex_match[/^[0-9]{3}[\/-][0-9]{4}[\/-][0-9]{4}/]';
break;
default:
$rules = parent::getFieldRule($field, $rules, $action);
@ -81,6 +81,25 @@ class CardController extends BillingController
}
return $options;
}
//Field별 Form Datas 처리용
protected function getFieldFormData(string $field, $entity = null): array
{
switch ($field) {
case 'card_number':
case 'card_expiration':
$temps = array();
foreach ($this->request->getVar($field) as $value) {
array_push($temps, $value);
}
$this->_viewDatas['fieldDatas'][$field] = implode("-", $temps);
break;
default:
return parent::getFieldFormData($field, $entity);
break;
}
return $this->_viewDatas['fieldDatas'];
}
//Update관련
//카드결제처리
@ -108,6 +127,7 @@ class CardController extends BillingController
$this->_viewDatas['fieldDatas']["response"] = $this->pg_process(true);
//Card 결제처리
$this->_viewDatas['fieldDatas']["type"] = $this->_viewDatas['className'];
$this->_viewDatas['fieldDatas']["status"] = DEFAULTS['STATUS'];
return parent::update_process($entity);
}
}

View File

@ -30,16 +30,16 @@ function getFieldForm_CardHelper($field, $value, array $viewDatas, array $attrib
);
break;
case 'card_expiration':
$months = [];
for ($i = 1; $i <= 12; $i++) {
$months[$i] = "{$i}";
}
$start = date('Y');
$end = date('Y', strtotime(date("Y") . ' + 10 year'));
$years = [];
for ($i = $start; $i <= $end; $i++) {
$years[$i] = "{$i}";
}
$months = [];
for ($i = 1; $i <= 12; $i++) {
$months[sprintf("%02d", $i)] = "{$i}";
}
return form_dropdown("{$field}[]", $years, DEFAULTS['EMPTY']) . '/ ' .
form_dropdown("{$field}[]", $months, DEFAULTS['EMPTY']);
break;