Skip to Content
FrontendBundlesCRUDFormsRender Form Fields

Render Form Fields

RenderFormFields is the core form rendering component. It reads entity column metadata and renders the appropriate form control for each field type automatically.


Import

import { RenderFormFields } from "@phpcreation/frontend-crud-react-nextjs-bundle/components/RenderFormFields";

How It Works

Each field’s columnTypeEnum determines which input component is rendered:

Column TypeRendered Component
TEXTInput
TEXTAREATextarea
TEXT_EDITORTextEditor
NUMBERInput (type=number)
BOOLEANBooleanToggle
SELECTCombobox (async)
MANY_TO_MANYCombobox (isMulti)
DATECalendarInput
TIMETimePicker
COLORColorPicker
COUNTRYCountrySelector
STATEStateSelector
CITYCitySelector

Props

PropTypeDescription
fieldsFieldConfig[]Field definitions from entity metadata
formUseFormReturnReact Hook Form instance
disabledbooleanDisable all fields
localestringActive locale (for translatable fields)

Usage

import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { Form } from "@phpcreation/frontend-components-react-nextjs-bundle/components/Form"; import { RenderFormFields } from "..."; export function AddEntityForm({ fields, schema }) { const form = useForm({ resolver: zodResolver(schema) }); return ( <Form {...form}> <form onSubmit={form.handleSubmit(onSubmit)}> <RenderFormFields fields={fields} form={form} /> <Button type="submit">Save</Button> </form> </Form> ); }

In generated CRUD pages, RenderFormFields is already wired up. You only need to use it directly when building custom form layouts.


Conditional Fields

Fields can be shown/hidden based on other field values using the showWhen config in entity metadata:

{ "fields": { "vatNumber": { "showWhen": { "field": "isBusiness", "value": true } } } }

Last updated on