- name
- thinkphp-ui-restoration
- description
- Generate and restore ThinkPHP UI components using this project's existing conventions. Use when the user asks to create or restore
.tplcomponents, adapt screenshots/designs into existing ThinkPHP pages, or add matching CSS/mock data/controller bindings for this codebase.
ThinkPHP UI Restoration
Use When
- The user wants a new ThinkPHP
.tplcomponent or page section. - The user provides a screenshot, DOM, or reference UI to restore in this project.
- The task also needs matching CSS, mock data, or controller
View::assignstructure.
Rules
- Reuse existing project structure first:
view/@components,view/@pages,public/__base/css/common.css, and current class naming patterns. - Follow ThinkPHP template syntax and safe field access, such as
{$e.xxx|default=''}andisset(...)checks, to avoid undefined index errors. - When adding a component, also add the required CSS, mock fields, and controller/template wiring so it can render directly.
- Prefer updating existing
xqbj-components over creating a new pattern when the UI is only a variation of an existing block. - Put shared styles in
public/__base/css/common.css; only use page-level CSS when the style is truly page-specific. - If the component depends on list data, also update the matching mock data in
app/BaseController.phpor the relevant controller.
Workflow
- Inspect nearby components and styles before creating new structure.
- Decide whether to reuse, extend, or add a new component.
- Implement the
.tplfirst, then matching CSS, then any mock/controller data needed. - Keep output visually consistent with the existing project, including spacing, truncation, image handling, and mobile behavior.
Project Conventions
- Components usually live in
view/@components/and are included from page templates. - Page templates usually live in
view/@pages/. - Shared UI styles usually belong in
public/__base/css/common.css. - Mock lists and fallback fields are commonly assigned from
app/BaseController.php. - Use existing class prefixes such as
xqbj-component-,xqbj-list-, and page-level wrappers already present nearby.
Delivery Checklist
.tplstructure matches nearby component style.- CSS is added in the correct file and follows existing naming.
- Missing fields are guarded with
defaultor conditional rendering. - Long text has truncation rules when needed.
- Mobile layout is considered if the block appears in responsive pages.
- Required mock data or controller
View::assigndata is updated.
Output Standard
- Prefer minimal edits over introducing new abstractions.
- Keep naming consistent with existing
xqbj-/ page-level patterns. - If a field may be absent, provide a default or conditional render path.
- When restoring from a screenshot, match the existing project style rather than inventing a new design system.