63 lines
3.9 KiB
PHP
63 lines
3.9 KiB
PHP
<?php
|
|
$v = function ($k, $d = '') use ($p) { return $p ? ($p[$k] ?? $d) : $d; };
|
|
$isEdit = !empty($p);
|
|
?>
|
|
<div class="page-head">
|
|
<div><h1><?php echo $isEdit ? '编辑产品' : '新增产品'; ?></h1><div class="desc">填写产品信息,封面留空将使用渐变占位图</div></div>
|
|
<a class="btn-ghost" href="<?php echo site_url('admin/products'); ?>">← 返回列表</a>
|
|
</div>
|
|
|
|
<div class="admin-card">
|
|
<form id="pbForm" method="post" action="<?php echo site_url($isEdit ? 'admin/products/update/' . $p['id'] : 'admin/products/store'); ?>" enctype="multipart/form-data">
|
|
<?php echo csrf_field(); ?>
|
|
<div class="form-grid">
|
|
<div class="field">
|
|
<label>所属分类 *</label>
|
|
<select name="category_id" required>
|
|
<?php foreach ($cats as $c): ?><option value="<?php echo e($c['id']); ?>" <?php echo $v('category_id') == $c['id'] ? 'selected' : ''; ?>><?php echo e($c['name']); ?></option><?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="field"><label>产品名称 *</label><input name="name" value="<?php echo e($v('name')); ?>" required></div>
|
|
<div class="field"><label>URL 标识(留空按序号生成,短而稳定)</label><input name="slug" value="<?php echo e($v('slug')); ?>" placeholder="留空则自动生成如 12"></div>
|
|
<div class="field"><label>价格(元,起)</label><input name="price" type="number" step="0.01" value="<?php echo e($v('price')); ?>"></div>
|
|
</div>
|
|
|
|
<div class="field"><label>一句话简介</label><input name="summary" value="<?php echo e($v('summary')); ?>"></div>
|
|
<div class="field">
|
|
<label>详细描述(可视化编辑)</label>
|
|
<p class="pb-hint" style="margin:0 0 8px">下方为可视化编辑器:上传素材、拖拽文字/图片/按钮自由排版,拖动右下角缩放、双击文字直接编辑。保存后前台按此布局整页展示;可放置「购买按钮 / 价格 / 规格参数」专用块(自动读取本产品数据)。</p>
|
|
<?php
|
|
$layoutJson = $v('layout');
|
|
$layoutArr = $layoutJson ? @json_decode($layoutJson, true) : [];
|
|
if (!is_array($layoutArr)) $layoutArr = [];
|
|
echo \Core\View::buffer('admin/parts/builder', ['module' => 'product', 'layout' => $layoutArr]);
|
|
?>
|
|
<input type="hidden" name="layout" id="pbLayout">
|
|
</div>
|
|
|
|
<div class="form-grid">
|
|
<div class="field"><label>封面图(上传,可选)</label><input type="file" name="cover" accept="image/*"></div>
|
|
<div class="field"><label>或填写图片地址/路径</label><input name="cover_url" value="<?php echo e($v('cover')); ?>" placeholder="assets/uploads/xxx.jpg 或 http(s)://"></div>
|
|
</div>
|
|
|
|
<div class="field">
|
|
<label>规格参数(每行一项,格式:参数名|参数值)</label>
|
|
<textarea name="specs" placeholder="降温方式|水冷循环 续航|6-8 小时"><?php echo e($specText ?? ''); ?></textarea>
|
|
</div>
|
|
|
|
<div class="form-grid">
|
|
<div class="field"><label>标签(逗号分隔)</label><input name="tags" value="<?php echo e($v('tags')); ?>"></div>
|
|
<div class="field"><label>排序(越小越靠前)</label><input name="sort_order" type="number" value="<?php echo e($v('sort_order', 0)); ?>"></div>
|
|
</div>
|
|
|
|
<div class="field" style="display:flex;align-items:center;gap:8px">
|
|
<input type="checkbox" name="status" value="1" <?php echo $v('status', 1) ? 'checked' : ''; ?> id="st"> <label for="st" style="margin:0">立即上线</label>
|
|
</div>
|
|
|
|
<div class="form-actions">
|
|
<button class="btn-primary" type="submit">保存</button>
|
|
<a class="btn-ghost" href="<?php echo site_url('admin/products'); ?>">取消</a>
|
|
</div>
|
|
</form>
|
|
</div>
|