vhost init...3
This commit is contained in:
parent
425a9df110
commit
2d09b4fcce
@ -3,6 +3,7 @@
|
|||||||
namespace App\Controllers\Admin;
|
namespace App\Controllers\Admin;
|
||||||
|
|
||||||
use App\Controllers\Trait\UpDownloadTrait;
|
use App\Controllers\Trait\UpDownloadTrait;
|
||||||
|
use App\Models\DeviceModel;
|
||||||
use App\Models\ProductModel;
|
use App\Models\ProductModel;
|
||||||
use CodeIgniter\HTTP\RequestInterface;
|
use CodeIgniter\HTTP\RequestInterface;
|
||||||
use CodeIgniter\HTTP\ResponseInterface;
|
use CodeIgniter\HTTP\ResponseInterface;
|
||||||
@ -11,6 +12,7 @@ use Psr\Log\LoggerInterface;
|
|||||||
class ProductController extends AdminController
|
class ProductController extends AdminController
|
||||||
{
|
{
|
||||||
use UpDownloadTrait;
|
use UpDownloadTrait;
|
||||||
|
private $_deviceModel = null;
|
||||||
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
|
||||||
{
|
{
|
||||||
parent::initController($request, $response, $logger);
|
parent::initController($request, $response, $logger);
|
||||||
@ -22,6 +24,11 @@ class ProductController extends AdminController
|
|||||||
helper($this->_viewDatas['className']);
|
helper($this->_viewDatas['className']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final protected function getDeviceModel(): DeviceModel
|
||||||
|
{
|
||||||
|
return $this->_deviceModel = $this->_deviceModel ?: new DeviceModel();
|
||||||
|
}
|
||||||
|
|
||||||
public function getFields(string $action = ""): array
|
public function getFields(string $action = ""): array
|
||||||
{
|
{
|
||||||
$fields = ["category_uid", 'type', 'name', "photo", "cost", "sale", "stock", "view_cnt", "status", "content",];
|
$fields = ["category_uid", 'type', 'name', "photo", "cost", "sale", "stock", "view_cnt", "status", "content",];
|
||||||
@ -77,7 +84,20 @@ class ProductController extends AdminController
|
|||||||
return $this->_viewDatas['fieldDatas']['cost'] - $this->_viewDatas['fieldDatas']['sale'];
|
return $this->_viewDatas['fieldDatas']['cost'] - $this->_viewDatas['fieldDatas']['sale'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function action_init(array $action_datas): void
|
||||||
|
{
|
||||||
|
parent::action_init($action_datas);
|
||||||
|
$this->_viewDatas['device'] = [];
|
||||||
|
$this->_viewDatas['device']['fields'] = ['server', 'cpu', 'memory', 'disk', 'nic', 'publicip', 'os'];
|
||||||
|
$this->_viewDatas['device']['options'] = $this->getDeviceModel()->getOptions();
|
||||||
|
}
|
||||||
|
|
||||||
//Insert관련
|
//Insert관련
|
||||||
|
protected function insert_validate()
|
||||||
|
{
|
||||||
|
parent::insert_validate();
|
||||||
|
}
|
||||||
|
|
||||||
protected function insert_process()
|
protected function insert_process()
|
||||||
{
|
{
|
||||||
$this->_viewDatas['fieldDatas']['price'] = $this->calculate_price();
|
$this->_viewDatas['fieldDatas']['price'] = $this->calculate_price();
|
||||||
|
|||||||
@ -136,9 +136,9 @@ abstract class BaseController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
//초기화
|
//초기화
|
||||||
final public function action_init(array $viewDatas)
|
protected function action_init(array $action_datas): void
|
||||||
{
|
{
|
||||||
switch ($viewDatas['action']) {
|
switch ($action_datas['action']) {
|
||||||
case 'insert_form':
|
case 'insert_form':
|
||||||
$action = 'insert';
|
$action = 'insert';
|
||||||
break;
|
break;
|
||||||
@ -146,15 +146,14 @@ abstract class BaseController extends Controller
|
|||||||
$action = 'update';
|
$action = 'update';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$action = $viewDatas['action'];
|
$action = $action_datas['action'];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$this->_viewDatas['fields'] = array_key_exists('fields', $viewDatas) ? $viewDatas['fields'] : $this->getFields($action);
|
$this->_viewDatas['fields'] = array_key_exists('fields', $action_datas) ? $action_datas['fields'] : $this->getFields($action);
|
||||||
$this->_viewDatas['fieldRules'] = $this->getFieldRules($this->_viewDatas['fields'], $action);
|
$this->_viewDatas['fieldRules'] = $this->getFieldRules($this->_viewDatas['fields'], $action);
|
||||||
$this->_viewDatas['fieldFilters'] = $this->getFieldFilters();
|
$this->_viewDatas['fieldFilters'] = $this->getFieldFilters();
|
||||||
$this->_viewDatas['batchjobFilters'] = $this->getFieldBatchFilters();
|
$this->_viewDatas['batchjobFilters'] = $this->getFieldBatchFilters();
|
||||||
$this->_viewDatas['fieldFormOptions'] = $this->getFieldFormOptions($this->_viewDatas['fieldFilters']);
|
$this->_viewDatas['fieldFormOptions'] = $this->getFieldFormOptions($this->_viewDatas['fieldFilters']);
|
||||||
return $this->_viewDatas;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Insert관련
|
//Insert관련
|
||||||
@ -162,10 +161,10 @@ abstract class BaseController extends Controller
|
|||||||
{
|
{
|
||||||
$this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []];
|
$this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []];
|
||||||
}
|
}
|
||||||
public function insert_form()
|
final public function insert_form()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__]);
|
$this->action_init(['action' => __FUNCTION__]);
|
||||||
$this->insert_form_process();
|
$this->insert_form_process();
|
||||||
helper(['form']);
|
helper(['form']);
|
||||||
$this->_session->keepFlashdata(SESSION_NAMES['RETURN_URL']);
|
$this->_session->keepFlashdata(SESSION_NAMES['RETURN_URL']);
|
||||||
@ -198,7 +197,7 @@ abstract class BaseController extends Controller
|
|||||||
//Transaction 시작
|
//Transaction 시작
|
||||||
$this->_model->transStart();
|
$this->_model->transStart();
|
||||||
try {
|
try {
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__]);
|
$this->action_init(['action' => __FUNCTION__]);
|
||||||
$this->insert_validate();
|
$this->insert_validate();
|
||||||
$entity = $this->insert_process();
|
$entity = $this->insert_process();
|
||||||
//Transaction Commit
|
//Transaction Commit
|
||||||
@ -221,10 +220,10 @@ abstract class BaseController extends Controller
|
|||||||
$this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []];
|
$this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []];
|
||||||
return $entity;
|
return $entity;
|
||||||
}
|
}
|
||||||
public function update_form($uid)
|
final public function update_form($uid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__]);
|
$this->action_init(['action' => __FUNCTION__]);
|
||||||
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
||||||
$this->_viewDatas['entity'] = $this->update_form_process($entity);
|
$this->_viewDatas['entity'] = $this->update_form_process($entity);
|
||||||
helper(['form']);
|
helper(['form']);
|
||||||
@ -272,7 +271,7 @@ abstract class BaseController extends Controller
|
|||||||
//Transaction 시작
|
//Transaction 시작
|
||||||
$this->_model->transStart();
|
$this->_model->transStart();
|
||||||
try {
|
try {
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__]);
|
$this->action_init(['action' => __FUNCTION__]);
|
||||||
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
||||||
$this->update_validate($entity);
|
$this->update_validate($entity);
|
||||||
$entity = $this->update_process($entity);
|
$entity = $this->update_process($entity);
|
||||||
@ -298,10 +297,10 @@ abstract class BaseController extends Controller
|
|||||||
$this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []];
|
$this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []];
|
||||||
return $entity;
|
return $entity;
|
||||||
}
|
}
|
||||||
public function reply_form($uid)
|
final public function reply_form($uid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__]);
|
$this->action_init(['action' => __FUNCTION__]);
|
||||||
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
||||||
$this->_viewDatas['entity'] = $this->reply_form_process($entity);
|
$this->_viewDatas['entity'] = $this->reply_form_process($entity);
|
||||||
helper(['form']);
|
helper(['form']);
|
||||||
@ -335,7 +334,7 @@ abstract class BaseController extends Controller
|
|||||||
//Transaction 시작
|
//Transaction 시작
|
||||||
$this->_model->transStart();
|
$this->_model->transStart();
|
||||||
try {
|
try {
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__]);
|
$this->action_init(['action' => __FUNCTION__]);
|
||||||
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
||||||
$this->reply_validate($entity);
|
$this->reply_validate($entity);
|
||||||
$entity = $this->reply_process($entity);
|
$entity = $this->reply_process($entity);
|
||||||
@ -377,7 +376,7 @@ abstract class BaseController extends Controller
|
|||||||
//Transaction 시작
|
//Transaction 시작
|
||||||
$this->_model->transStart();
|
$this->_model->transStart();
|
||||||
try {
|
try {
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__, 'fields' => [$field]]);
|
$this->action_init(['action' => __FUNCTION__, 'fields' => [$field]]);
|
||||||
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
||||||
$this->toggle_validate($entity);
|
$this->toggle_validate($entity);
|
||||||
$entity = $this->toggle_process($entity);
|
$entity = $this->toggle_process($entity);
|
||||||
@ -430,7 +429,7 @@ abstract class BaseController extends Controller
|
|||||||
if (!is_array($fields) || count($fields) === 0) {
|
if (!is_array($fields) || count($fields) === 0) {
|
||||||
throw new \Exception($this->_viewDatas['title'] . '에서 변경할 항목(field)이 선택되지 않았습니다.');
|
throw new \Exception($this->_viewDatas['title'] . '에서 변경할 항목(field)이 선택되지 않았습니다.');
|
||||||
}
|
}
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__, 'fields' => $fields]);
|
$this->action_init(['action' => __FUNCTION__, 'fields' => $fields]);
|
||||||
$uids = $this->request->getVar('batchjob_uids') ?: throw new \Exception($this->_viewDatas['title'] . '에서 변경할 항목(uid)이 선택되지 않았습니다.');
|
$uids = $this->request->getVar('batchjob_uids') ?: throw new \Exception($this->_viewDatas['title'] . '에서 변경할 항목(uid)이 선택되지 않았습니다.');
|
||||||
$cnt = 1;
|
$cnt = 1;
|
||||||
foreach ($uids as $uid) {
|
foreach ($uids as $uid) {
|
||||||
@ -509,10 +508,10 @@ abstract class BaseController extends Controller
|
|||||||
$this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []];
|
$this->_viewDatas['forms'] = ['attributes' => ['method' => "post",], 'hiddens' => []];
|
||||||
return $entity;
|
return $entity;
|
||||||
}
|
}
|
||||||
public function view($uid)
|
final public function view($uid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__]);
|
$this->action_init(['action' => __FUNCTION__]);
|
||||||
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
||||||
$this->_viewDatas['entity'] = $this->view_process($entity);
|
$this->_viewDatas['entity'] = $this->view_process($entity);
|
||||||
helper(['form']);
|
helper(['form']);
|
||||||
@ -584,7 +583,7 @@ abstract class BaseController extends Controller
|
|||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__]);
|
$this->action_init(['action' => __FUNCTION__]);
|
||||||
foreach ($this->_viewDatas['fieldFilters'] as $field) {
|
foreach ($this->_viewDatas['fieldFilters'] as $field) {
|
||||||
$this->_viewDatas[$field] = $this->request->getVar($field) ?: DEFAULTS['EMPTY'];
|
$this->_viewDatas[$field] = $this->request->getVar($field) ?: DEFAULTS['EMPTY'];
|
||||||
}
|
}
|
||||||
@ -646,7 +645,7 @@ abstract class BaseController extends Controller
|
|||||||
final public function excel()
|
final public function excel()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$this->_viewDatas = $this->action_init(['action' => __FUNCTION__]);
|
$this->action_init(['action' => __FUNCTION__]);
|
||||||
$this->_viewDatas['Entitys'] = $this->index_entitys();
|
$this->_viewDatas['Entitys'] = $this->index_entitys();
|
||||||
$html = view(
|
$html = view(
|
||||||
$this->_viewPath . '/excel',
|
$this->_viewPath . '/excel',
|
||||||
@ -684,7 +683,7 @@ abstract class BaseController extends Controller
|
|||||||
}
|
}
|
||||||
return $this->response->download(PATHS['UPLOAD'] . "/" . $uploaded_filename, null)->setFileName(date("Ymd") . '_' . $filename);
|
return $this->response->download(PATHS['UPLOAD'] . "/" . $uploaded_filename, null)->setFileName(date("Ymd") . '_' . $filename);
|
||||||
}
|
}
|
||||||
public function download(string $field, $uid)
|
final public function download(string $field, $uid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
$entity = $this->_model->getEntity([$this->_model->getPrimaryKey() => $uid]);
|
||||||
|
|||||||
@ -149,11 +149,11 @@ class BillingController extends FrontController
|
|||||||
$this->setCategory($this->request->getVar('category') ?: self::DEFAULT_CATEGORY);
|
$this->setCategory($this->request->getVar('category') ?: self::DEFAULT_CATEGORY);
|
||||||
parent::index_process();
|
parent::index_process();
|
||||||
}
|
}
|
||||||
protected function index_setCondition()
|
protected function index_condition()
|
||||||
{
|
{
|
||||||
//사용자정보(user_uid)에 맞는 Biiling정보 가져오기
|
//사용자정보(user_uid)에 맞는 Biiling정보 가져오기
|
||||||
$this->_model->where('user_uid', $this->_session->get(SESSION_NAMES['AUTH'])[AUTH_FIELDS['ID']]);
|
$this->_model->where('user_uid', $this->_session->get(SESSION_NAMES['AUTH'])[AUTH_FIELDS['ID']]);
|
||||||
parent::index_setCondition();
|
parent::index_condition();
|
||||||
}
|
}
|
||||||
|
|
||||||
//추가기능
|
//추가기능
|
||||||
|
|||||||
@ -14,4 +14,18 @@ class DeviceEntity extends BaseEntity
|
|||||||
return $this->attributes['name'];
|
return $this->attributes['name'];
|
||||||
}
|
}
|
||||||
//추가기능
|
//추가기능
|
||||||
|
public function getType(): string
|
||||||
|
{
|
||||||
|
return $this->attributes['type'];
|
||||||
|
}
|
||||||
|
|
||||||
|
//판매금액표시용
|
||||||
|
public function getSalePrice(array $options = []): string
|
||||||
|
{
|
||||||
|
$price = $this->attributes['price'] - $this->attributes['sale'];
|
||||||
|
if (array_key_exists('format', $options)) {
|
||||||
|
$price = sprintf($options['format'], number_format($price));
|
||||||
|
}
|
||||||
|
return $price;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,16 @@ function getFieldForm_ProductHelper($field, $value, array $viewDatas, array $att
|
|||||||
// }
|
// }
|
||||||
// return implode(" ", $checkboxs);
|
// return implode(" ", $checkboxs);
|
||||||
break;
|
break;
|
||||||
|
case 'server':
|
||||||
|
case 'cpu':
|
||||||
|
case 'memory':
|
||||||
|
case 'disk':
|
||||||
|
case 'nic':
|
||||||
|
case 'os':
|
||||||
|
case 'publicip':
|
||||||
|
$viewDatas['fieldFormOptions'][$field] = [DEFAULTS['EMPTY'] => lang("Device.TYPE.label.{$field}") . " 선택", ...$viewDatas['device']['options'][$field]];
|
||||||
|
return form_dropdown($field, $viewDatas['fieldFormOptions'][$field], $value, [...$attributes, 'style' => 'width:200px']);
|
||||||
|
break;
|
||||||
case 'title':
|
case 'title':
|
||||||
case 'name':
|
case 'name':
|
||||||
return form_input($field, $value, ["placeholder" => "예)", "style" => "width:60%; ::placeholder{ color:silver; opacity: 1; }"]);
|
return form_input($field, $value, ["placeholder" => "예)", "style" => "width:60%; ::placeholder{ color:silver; opacity: 1; }"]);
|
||||||
|
|||||||
@ -15,16 +15,12 @@ return [
|
|||||||
'created_at' => "생성일"
|
'created_at' => "생성일"
|
||||||
],
|
],
|
||||||
"TYPE" => [
|
"TYPE" => [
|
||||||
'beremetal' => '단독서버',
|
'server' => '서버',
|
||||||
'kvm' => '가상서버',
|
|
||||||
'container' => '콘테이너',
|
|
||||||
'cpu' => 'CPU',
|
'cpu' => 'CPU',
|
||||||
'memory' => 'Memory',
|
'memory' => 'Memory',
|
||||||
'ssd' => 'SSD',
|
'disk' => '저장장치',
|
||||||
'nvme' => 'NVME',
|
|
||||||
'nic' => 'LANCARD',
|
'nic' => 'LANCARD',
|
||||||
'windows' => 'Windows',
|
'os' => 'OS',
|
||||||
'linux' => 'Linux',
|
|
||||||
'publicip' => '공인IP'
|
'publicip' => '공인IP'
|
||||||
],
|
],
|
||||||
"STATUS" => [
|
"STATUS" => [
|
||||||
|
|||||||
@ -17,7 +17,7 @@ class DeviceModel extends BaseModel
|
|||||||
parent::__construct('Device');
|
parent::__construct('Device');
|
||||||
$this->allowedFields = [
|
$this->allowedFields = [
|
||||||
...$this->allowedFields,
|
...$this->allowedFields,
|
||||||
'type', 'name', "photo", "cost", "price", "sale",
|
'type', 'name', "cost", "price", "sale",
|
||||||
"stock", "content", "status"
|
"stock", "content", "status"
|
||||||
];
|
];
|
||||||
$this->validationRules = [...$this->validationRules, ...$this->getFieldRules($this->allowedFields),];
|
$this->validationRules = [...$this->validationRules, ...$this->getFieldRules($this->allowedFields),];
|
||||||
@ -57,6 +57,23 @@ class DeviceModel extends BaseModel
|
|||||||
return $rules;
|
return $rules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Form 선택용 Options Data용
|
||||||
|
public function getOptions(array $conditions = [], $options = []): array
|
||||||
|
{
|
||||||
|
//대분류 부분은 선택이 되지 않게 하기위해 따로 만듬 (form_dropdown의 optgroup 기능)
|
||||||
|
foreach ($this->getEntitys($conditions) as $entity) {
|
||||||
|
if (!array_key_exists($entity->getType(), $options)) {
|
||||||
|
$options[$entity->getType()] = [];
|
||||||
|
}
|
||||||
|
$options[$entity->getType()][$entity->getPrimaryKey()] = sprintf(
|
||||||
|
"%s %s",
|
||||||
|
$entity->getSalePrice(['format' => "%s원"]),
|
||||||
|
$entity->getTitle()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $options;
|
||||||
|
}
|
||||||
|
|
||||||
public function getEntity($conditions): DeviceEntity
|
public function getEntity($conditions): DeviceEntity
|
||||||
{
|
{
|
||||||
return $this->where($conditions)->first() ?: throw new \Exception(__FUNCTION__ . "에서 {$this->getClassName()}의 해당 데이터가 없습니다.");
|
return $this->where($conditions)->first() ?: throw new \Exception(__FUNCTION__ . "에서 {$this->getClassName()}의 해당 데이터가 없습니다.");
|
||||||
|
|||||||
@ -5,9 +5,23 @@
|
|||||||
<?= form_open_multipart(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
|
<?= form_open_multipart(current_url(), $viewDatas['forms']['attributes'], $viewDatas['forms']['hiddens']) ?>
|
||||||
<table class="form table table-bordered table-striped">
|
<table class="form table table-bordered table-striped">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:right;">기본장비</td>
|
||||||
|
<td>
|
||||||
|
<?php foreach ($viewDatas['device']['fields'] as $field) : ?>
|
||||||
|
<div>
|
||||||
|
<label class="col-sm-1 col-form-label"><?= lang("Device.TYPE.label.{$field}") ?></label>
|
||||||
|
<?= getFieldForm_ProductHelper($field, DEFAULTS['EMPTY'], $viewDatas) ?>
|
||||||
|
<?= form_input('{$field}_cnt'); ?>
|
||||||
|
<?= validation_show_error($field); ?>
|
||||||
|
</div>
|
||||||
|
<?php endforeach ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<?php foreach ($viewDatas['fields'] as $field) : ?>
|
<?php foreach ($viewDatas['fields'] as $field) : ?>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="label"><?= getFieldLabel_ProductHelper($field, $viewDatas) ?></td>
|
<td class=" label"><?= getFieldLabel_ProductHelper($field, $viewDatas) ?>
|
||||||
|
</td>
|
||||||
<td class="column">
|
<td class="column">
|
||||||
<?= getFieldForm_ProductHelper($field, DEFAULTS['EMPTY'], $viewDatas) ?>
|
<?= getFieldForm_ProductHelper($field, DEFAULTS['EMPTY'], $viewDatas) ?>
|
||||||
<?= validation_show_error($field); ?>
|
<?= validation_show_error($field); ?>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user