Files
coolcoth.com/app/Controllers/Admin/CaseController.php
T
2026-08-08 16:26:31 +08:00

88 lines
3.2 KiB
PHP

<?php
namespace App\Controllers\Admin;
use App\Models\CustomerCase;
/**
* 后台「客户案例」管理:增删改查,与新闻管理同构。
* 权限能力键:cases(在 Helper::admin_role_map 中分配)。
*/
class CaseController extends AdminController
{
public function index()
{
return $this->view('admin/cases', [
'cases' => (new CustomerCase())->all(),
'seg' => $this->seg(),
]);
}
public function create()
{
return $this->view('admin/cases_form', ['c' => null]);
}
public function store()
{
if (!csrf_check()) { $this->redirect('admin/cases'); }
$cover = $this->uploadFile('cover') ?? $this->post('cover_url', '');
$model = new CustomerCase();
$id = $model->insert([
'title' => $this->post('title'),
'slug' => '',
'customer' => $this->post('customer', ''),
'industry' => $this->post('industry', ''),
'cover' => $cover,
'summary' => $this->post('summary'),
'content' => $this->post('content'),
'published_at' => $this->post('published_at', date('Y-m-d')),
'sort_order' => (int) $this->post('sort_order', 0),
'status' => $this->post('status', 1) ? 1 : 0,
'views' => 0,
'layout' => $this->post('layout', ''),
]);
// URL 标识留空时按记录序号顺序生成(短、稳定),避免中文标题导致过长
$slug = $this->post('slug') ? slugify($this->post('slug')) : (string)$id;
$model->update($id, ['slug' => $slug]);
$this->redirect('admin/cases');
}
public function edit($id)
{
$case = (new CustomerCase())->find($id);
if (!$case) { $this->redirect('admin/cases'); }
return $this->view('admin/cases_form', ['c' => $case]);
}
public function update($id)
{
if (!csrf_check()) { $this->redirect('admin/cases'); }
$model = new CustomerCase();
$case = $model->find($id);
if (!$case) { $this->redirect('admin/cases'); }
$cover = $this->uploadFile('cover');
if (!$cover && $this->post('cover_url')) $cover = $this->post('cover_url');
if (!$cover) $cover = $case['cover'] ?? '';
$model->update($id, [
'title' => $this->post('title'),
'slug' => $this->post('slug') ? slugify($this->post('slug')) : (string)$id,
'customer' => $this->post('customer', ''),
'industry' => $this->post('industry', ''),
'cover' => $cover,
'summary' => $this->post('summary'),
'content' => $this->post('content'),
'published_at' => $this->post('published_at', date('Y-m-d')),
'sort_order' => (int) $this->post('sort_order', 0),
'status' => $this->post('status', 1) ? 1 : 0,
'layout' => $this->post('layout', ''),
]);
$this->redirect('admin/cases');
}
public function delete($id)
{
if (csrf_check()) { (new CustomerCase())->delete($id); }
$this->redirect('admin/cases');
}
}