Files
ai-web/resources/views/admin/guides/form.blade.php
jiangdong.cheng a795b2c896
Some checks failed
Tests / PHP 8.2 (push) Has been cancelled
Tests / PHP 8.3 (push) Has been cancelled
Tests / PHP 8.4 (push) Has been cancelled
优化功能
2026-02-12 17:10:36 +08:00

137 lines
7.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('layouts.admin')
@section('title', $item->exists ? '编辑教程' : '新建教程')
@section('head')
@include('admin.partials.modern-form-head')
@endsection
@section('content')
<div class="card modern-form-card">
<div class="card-header d-flex justify-content-between align-items-center">
<h3 class="card-title mb-0">{{ $item->exists ? '编辑教程' : '新建教程' }}</h3>
@if($item->exists)
<form method="post" action="{{ route('admin.guides.publish', $item) }}">
@csrf
<button class="btn btn-sm btn-success" type="submit">发布</button>
</form>
@endif
</div>
<div class="card-body">
<p class="required-tip"><span class="required-star">*</span> 为必填项</p>
<form method="post" action="{{ $submitRoute }}" class="row g-3">
@csrf
@if($method !== 'POST') @method($method) @endif
<div class="col-12">
<section class="form-section">
<h4 class="form-section-title">基础信息</h4>
<p class="form-section-subtitle">先设定教程标题、难度与摘要,便于读者判断是否适合。</p>
<div class="row g-3">
<div class="col-md-8 field-required">
<label class="form-label">标题<span class="required-star">*</span></label>
<input class="form-control" name="title" value="{{ old('title', $item->title) }}" required>
</div>
<div class="col-md-4 field-required">
<label class="form-label">Slug<span class="required-star">*</span></label>
<input class="form-control" name="slug" value="{{ old('slug', $item->slug) }}" required>
</div>
<div class="col-md-4">
<label class="form-label">分类</label>
<select class="form-select" name="category_id">
<option value="">未分类</option>
@foreach($categories as $category)
<option value="{{ $category->id }}" @selected((string) old('category_id', $item->category_id) === (string) $category->id)>{{ $category->name }}</option>
@endforeach
</select>
</div>
<div class="col-md-4 field-required">
<label class="form-label">难度<span class="required-star">*</span></label>
<input class="form-control" name="difficulty" value="{{ old('difficulty', $item->difficulty ?: 'beginner') }}" required placeholder="beginner / intermediate / advanced">
</div>
<div class="col-md-4 field-required">
<label class="form-label">状态<span class="required-star">*</span></label>
<select class="form-select" name="status" required>
@foreach($statusOptions as $status)
<option value="{{ $status->value }}" @selected(old('status', $item->status?->value) === $status->value)>{{ $status->value }}</option>
@endforeach
</select>
</div>
<div class="col-md-6">
<label class="form-label">发布时间</label>
<input class="form-control" type="datetime-local" name="published_at" value="{{ old('published_at', optional($item->published_at)->format('Y-m-d\TH:i')) }}">
</div>
<div class="col-md-12 field-required">
<label class="form-label">摘要<span class="required-star">*</span></label>
<textarea class="form-control" name="excerpt" rows="2" required>{{ old('excerpt', $item->excerpt) }}</textarea>
<div class="form-hint">建议概括适用人群、完成收益和学习前提。</div>
</div>
</div>
</section>
</div>
<div class="col-12">
<section class="form-section">
<h4 class="form-section-title">内容编辑</h4>
<p class="form-section-subtitle">正文支持 Markdown 实时预览,适合分章节组织教程。</p>
@include('admin.partials.markdown-editor', [
'field' => 'body',
'value' => $item->body,
'label' => '正文内容Markdown',
'required' => true,
'rows' => 18,
'minlength' => 100,
'previewId' => 'guide-body-preview',
'hint' => '后端要求正文不少于 100 字符,建议用二级标题组织步骤。',
])
</section>
</div>
<div class="col-12">
<details class="advanced-panel">
<summary>高级设置SEO 字段)</summary>
<div class="row g-3 mt-2">
<div class="col-md-6">
<label class="form-label">SEO 标题</label>
<input class="form-control" name="seo_title" value="{{ old('seo_title', $item->seo_title) }}">
</div>
<div class="col-md-6">
<label class="form-label">SEO 描述</label>
<input class="form-control" name="seo_description" value="{{ old('seo_description', $item->seo_description) }}">
</div>
<div class="col-md-6">
<label class="form-label">H1</label>
<input class="form-control" name="h1" value="{{ old('h1', $item->h1) }}">
</div>
<div class="col-md-6">
<label class="form-label">Canonical URL</label>
<input class="form-control" name="canonical_url" value="{{ old('canonical_url', $item->canonical_url) }}" placeholder="https://example.com/guides/slug">
</div>
</div>
</details>
</div>
<div class="col-12">
<div class="editor-sticky-actions">
<small class="text-muted">建议保存前先检查预览中的标题层级与代码块格式。</small>
<button class="btn btn-primary" type="submit">保存教程</button>
</div>
</div>
</form>
</div>
</div>
@endsection
@section('scripts')
@include('admin.partials.modern-form-scripts')
@endsection