[{"data":1,"prerenderedAt":1619},["ShallowReactive",2],{"navigation_docs":3,"-form-guide-forms-data-validation":82,"-form-guide-forms-data-validation-surround":1614},[4],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Form","\u002Fform","1.getting-started",[9,26,58],{"title":10,"path":11,"stem":12,"children":13,"page":25},"Getting Started","\u002Fform\u002Fgetting-started","1.getting-started\u002F1.installation",[14,17,21],{"title":15,"path":16,"stem":12},"Installation","\u002Fform\u002Fgetting-started\u002Finstallation",{"title":18,"path":19,"stem":20},"Your first form","\u002Fform\u002Fgetting-started\u002Ffirst-form","1.getting-started\u002F2.first-form",{"title":22,"path":23,"stem":24},"Vue rendering","\u002Fform\u002Fgetting-started\u002Fvue-rendering","1.getting-started\u002F3.vue-rendering",false,{"title":27,"path":28,"stem":29,"children":30,"page":25},"Guide","\u002Fform\u002Fguide","2.guide\u002F1.forms-data-validation",[31,34,38,42,46,50,54],{"title":32,"path":33,"stem":29},"Forms, data, and validation","\u002Fform\u002Fguide\u002Fforms-data-validation",{"title":35,"path":36,"stem":37},"Fields and visibility","\u002Fform\u002Fguide\u002Ffields-visibility","2.guide\u002F2.fields-visibility",{"title":39,"path":40,"stem":41},"Renderers and composables","\u002Fform\u002Fguide\u002Frenderers-composables","2.guide\u002F3.renderers-composables",{"title":43,"path":44,"stem":45},"Collections and wizards","\u002Fform\u002Fguide\u002Fcollections-wizards","2.guide\u002F4.collections-wizards",{"title":47,"path":48,"stem":49},"Comboboxes","\u002Fform\u002Fguide\u002Fcomboboxes","2.guide\u002F5.comboboxes",{"title":51,"path":52,"stem":53},"Uploads","\u002Fform\u002Fguide\u002Fuploads","2.guide\u002F6.uploads",{"title":55,"path":56,"stem":57},"Composer and rich text","\u002Fform\u002Fguide\u002Fcomposer-rich-text","2.guide\u002F7.composer-rich-text",{"title":59,"path":60,"stem":61,"children":62,"page":25},"Reference","\u002Fform\u002Freference","3.reference\u002F1.fields",[63,66,70,74,78],{"title":64,"path":65,"stem":61},"Fields","\u002Fform\u002Freference\u002Ffields",{"title":67,"path":68,"stem":69},"PHP API","\u002Fform\u002Freference\u002Fphp-api","3.reference\u002F2.php-api",{"title":71,"path":72,"stem":73},"Vue API","\u002Fform\u002Freference\u002Fvue-api","3.reference\u002F3.vue-api",{"title":75,"path":76,"stem":77},"Configuration and commands","\u002Fform\u002Freference\u002Fconfiguration-commands","3.reference\u002F4.configuration-commands",{"title":79,"path":80,"stem":81},"Resource shape","\u002Fform\u002Freference\u002Fresource-shape","3.reference\u002F5.resource-shape",{"id":83,"title":32,"body":84,"description":1608,"extension":1609,"links":1610,"meta":1611,"navigation":136,"path":33,"seo":1612,"stem":29,"__hash__":1613},"docs\u002Fform\u002F2.guide\u002F1.forms-data-validation.md",{"type":85,"value":86,"toc":1602},"minimark",[87,91,95,100,108,705,731,737,783,786,790,797,1034,1048,1078,1082,1089,1370,1394,1406,1486,1501,1505,1518,1591,1598],[88,89,90],"p",{},"Inertify forms are container-resolved PHP classes. They define functional schema, authorization, initial data, validation, and upload behavior; the serialized resource gives Vue the information it needs to manage the form.",[92,93,94],"note",{},"Form schemas contain no CSS, layout grid, icons, or default presenter. Your application owns every rendered element and accessibility decision.",[96,97,99],"h2",{"id":98},"define-a-form","Define a form",[88,101,102,103,107],{},"Return fields and fieldsets from ",[104,105,106],"code",{},"fields()",". Fields without an explicit fieldset are grouped automatically.",[109,110,116],"pre",{"className":111,"code":112,"filename":113,"language":114,"meta":115,"style":115},"language-php shiki shiki-themes material-theme-lighter catppuccin-mocha catppuccin-mocha","\u003C?php\n\nnamespace App\\Forms;\n\nuse Inertify\\Form\\Fields\\Fieldset;\nuse Inertify\\Form\\Fields\\File;\nuse Inertify\\Form\\Fields\\Submit;\nuse Inertify\\Form\\Fields\\TextInput;\nuse Inertify\\Form\\Form;\n\nfinal class ProfileForm extends Form\n{\n    protected bool $unsavedWarning = true;\n\n    protected bool $scrollToFirstError = true;\n\n    public function fields(): array\n    {\n        return [\n            Fieldset::make('Profile')\n                ->id('profile')\n                ->description('Public account details.')\n                ->fields([\n                    TextInput::make('name', 'Name')\n                        ->required()\n                        ->maxLength(120)\n                        ->precognitive(),\n                    TextInput::make('email', 'Email')\n                        ->email()\n                        ->required()\n                        ->precognitive(),\n                    File::make('avatar', 'Avatar')\n                        ->image()\n                        ->maxSize(5 * 1024),\n                    Submit::make('Save profile'),\n                ]),\n        ];\n    }\n}\n","app\u002FForms\u002FProfileForm.php","php","",[104,117,118,131,138,159,164,189,211,233,255,272,277,296,302,327,332,350,355,377,383,393,421,441,460,471,503,515,531,542,571,580,589,598,628,638,660,681,687,693,699],{"__ignoreMap":115},[119,120,123,127],"span",{"class":121,"line":122},"line",1,[119,124,126],{"class":125},"sWTNM","\u003C?",[119,128,130],{"class":129},"svMjs","php\n",[119,132,134],{"class":121,"line":133},2,[119,135,137],{"emptyLinePlaceholder":136},true,"\n",[119,139,141,145,149,153,156],{"class":121,"line":140},3,[119,142,144],{"class":143},"scOca","namespace",[119,146,148],{"class":147},"s6-7G"," App",[119,150,152],{"class":151},"sOG8g","\\",[119,154,155],{"class":147},"Forms",[119,157,158],{"class":151},";\n",[119,160,162],{"class":121,"line":161},4,[119,163,137],{"emptyLinePlaceholder":136},[119,165,167,170,173,175,177,179,181,183,187],{"class":121,"line":166},5,[119,168,169],{"class":143},"use",[119,171,172],{"class":129}," Inertify",[119,174,152],{"class":151},[119,176,5],{"class":129},[119,178,152],{"class":151},[119,180,64],{"class":129},[119,182,152],{"class":151},[119,184,186],{"class":185},"spKqO","Fieldset",[119,188,158],{"class":151},[119,190,192,194,196,198,200,202,204,206,209],{"class":121,"line":191},6,[119,193,169],{"class":143},[119,195,172],{"class":129},[119,197,152],{"class":151},[119,199,5],{"class":129},[119,201,152],{"class":151},[119,203,64],{"class":129},[119,205,152],{"class":151},[119,207,208],{"class":185},"File",[119,210,158],{"class":151},[119,212,214,216,218,220,222,224,226,228,231],{"class":121,"line":213},7,[119,215,169],{"class":143},[119,217,172],{"class":129},[119,219,152],{"class":151},[119,221,5],{"class":129},[119,223,152],{"class":151},[119,225,64],{"class":129},[119,227,152],{"class":151},[119,229,230],{"class":185},"Submit",[119,232,158],{"class":151},[119,234,236,238,240,242,244,246,248,250,253],{"class":121,"line":235},8,[119,237,169],{"class":143},[119,239,172],{"class":129},[119,241,152],{"class":151},[119,243,5],{"class":129},[119,245,152],{"class":151},[119,247,64],{"class":129},[119,249,152],{"class":151},[119,251,252],{"class":185},"TextInput",[119,254,158],{"class":151},[119,256,258,260,262,264,266,268,270],{"class":121,"line":257},9,[119,259,169],{"class":143},[119,261,172],{"class":129},[119,263,152],{"class":151},[119,265,5],{"class":129},[119,267,152],{"class":151},[119,269,5],{"class":185},[119,271,158],{"class":151},[119,273,275],{"class":121,"line":274},10,[119,276,137],{"emptyLinePlaceholder":136},[119,278,280,284,287,290,293],{"class":121,"line":279},11,[119,281,283],{"class":282},"sNFzF","final",[119,285,286],{"class":282}," class",[119,288,289],{"class":147}," ProfileForm",[119,291,292],{"class":282}," extends",[119,294,295],{"class":147}," Form\n",[119,297,299],{"class":121,"line":298},12,[119,300,301],{"class":151},"{\n",[119,303,305,308,311,315,318,321,325],{"class":121,"line":304},13,[119,306,307],{"class":282},"    protected",[119,309,310],{"class":143}," bool",[119,312,314],{"class":313},"sxSEj"," $",[119,316,317],{"class":129},"unsavedWarning ",[119,319,320],{"class":125},"=",[119,322,324],{"class":323},"s27pR"," true",[119,326,158],{"class":151},[119,328,330],{"class":121,"line":329},14,[119,331,137],{"emptyLinePlaceholder":136},[119,333,335,337,339,341,344,346,348],{"class":121,"line":334},15,[119,336,307],{"class":282},[119,338,310],{"class":143},[119,340,314],{"class":313},[119,342,343],{"class":129},"scrollToFirstError ",[119,345,320],{"class":125},[119,347,324],{"class":323},[119,349,158],{"class":151},[119,351,353],{"class":121,"line":352},16,[119,354,137],{"emptyLinePlaceholder":136},[119,356,358,361,364,368,371,374],{"class":121,"line":357},17,[119,359,360],{"class":282},"    public",[119,362,363],{"class":282}," function",[119,365,367],{"class":366},"sgeHj"," fields",[119,369,370],{"class":151},"()",[119,372,373],{"class":125},":",[119,375,376],{"class":143}," array\n",[119,378,380],{"class":121,"line":379},18,[119,381,382],{"class":151},"    {\n",[119,384,386,390],{"class":121,"line":385},19,[119,387,389],{"class":388},"su_vF","        return",[119,391,392],{"class":151}," [\n",[119,394,396,399,402,405,408,412,416,418],{"class":121,"line":395},20,[119,397,398],{"class":147},"            Fieldset",[119,400,401],{"class":125},"::",[119,403,404],{"class":366},"make",[119,406,407],{"class":151},"(",[119,409,411],{"class":410},"sQGZM","'",[119,413,415],{"class":414},"s2lAL","Profile",[119,417,411],{"class":410},[119,419,420],{"class":151},")\n",[119,422,424,427,430,432,434,437,439],{"class":121,"line":423},21,[119,425,426],{"class":125},"                ->",[119,428,429],{"class":366},"id",[119,431,407],{"class":151},[119,433,411],{"class":410},[119,435,436],{"class":414},"profile",[119,438,411],{"class":410},[119,440,420],{"class":151},[119,442,444,446,449,451,453,456,458],{"class":121,"line":443},22,[119,445,426],{"class":125},[119,447,448],{"class":366},"description",[119,450,407],{"class":151},[119,452,411],{"class":410},[119,454,455],{"class":414},"Public account details.",[119,457,411],{"class":410},[119,459,420],{"class":151},[119,461,463,465,468],{"class":121,"line":462},23,[119,464,426],{"class":125},[119,466,467],{"class":366},"fields",[119,469,470],{"class":151},"([\n",[119,472,474,477,479,481,483,485,488,490,493,496,499,501],{"class":121,"line":473},24,[119,475,476],{"class":147},"                    TextInput",[119,478,401],{"class":125},[119,480,404],{"class":366},[119,482,407],{"class":151},[119,484,411],{"class":410},[119,486,487],{"class":414},"name",[119,489,411],{"class":410},[119,491,492],{"class":151},",",[119,494,495],{"class":410}," '",[119,497,498],{"class":414},"Name",[119,500,411],{"class":410},[119,502,420],{"class":151},[119,504,506,509,512],{"class":121,"line":505},25,[119,507,508],{"class":125},"                        ->",[119,510,511],{"class":366},"required",[119,513,514],{"class":151},"()\n",[119,516,518,520,523,525,529],{"class":121,"line":517},26,[119,519,508],{"class":125},[119,521,522],{"class":366},"maxLength",[119,524,407],{"class":151},[119,526,528],{"class":527},"sCOdc","120",[119,530,420],{"class":151},[119,532,534,536,539],{"class":121,"line":533},27,[119,535,508],{"class":125},[119,537,538],{"class":366},"precognitive",[119,540,541],{"class":151},"(),\n",[119,543,545,547,549,551,553,555,558,560,562,564,567,569],{"class":121,"line":544},28,[119,546,476],{"class":147},[119,548,401],{"class":125},[119,550,404],{"class":366},[119,552,407],{"class":151},[119,554,411],{"class":410},[119,556,557],{"class":414},"email",[119,559,411],{"class":410},[119,561,492],{"class":151},[119,563,495],{"class":410},[119,565,566],{"class":414},"Email",[119,568,411],{"class":410},[119,570,420],{"class":151},[119,572,574,576,578],{"class":121,"line":573},29,[119,575,508],{"class":125},[119,577,557],{"class":366},[119,579,514],{"class":151},[119,581,583,585,587],{"class":121,"line":582},30,[119,584,508],{"class":125},[119,586,511],{"class":366},[119,588,514],{"class":151},[119,590,592,594,596],{"class":121,"line":591},31,[119,593,508],{"class":125},[119,595,538],{"class":366},[119,597,541],{"class":151},[119,599,601,604,606,608,610,612,615,617,619,621,624,626],{"class":121,"line":600},32,[119,602,603],{"class":147},"                    File",[119,605,401],{"class":125},[119,607,404],{"class":366},[119,609,407],{"class":151},[119,611,411],{"class":410},[119,613,614],{"class":414},"avatar",[119,616,411],{"class":410},[119,618,492],{"class":151},[119,620,495],{"class":410},[119,622,623],{"class":414},"Avatar",[119,625,411],{"class":410},[119,627,420],{"class":151},[119,629,631,633,636],{"class":121,"line":630},33,[119,632,508],{"class":125},[119,634,635],{"class":366},"image",[119,637,514],{"class":151},[119,639,641,643,646,648,651,654,657],{"class":121,"line":640},34,[119,642,508],{"class":125},[119,644,645],{"class":366},"maxSize",[119,647,407],{"class":151},[119,649,650],{"class":527},"5",[119,652,653],{"class":125}," *",[119,655,656],{"class":527}," 1024",[119,658,659],{"class":151},"),\n",[119,661,663,666,668,670,672,674,677,679],{"class":121,"line":662},35,[119,664,665],{"class":147},"                    Submit",[119,667,401],{"class":125},[119,669,404],{"class":366},[119,671,407],{"class":151},[119,673,411],{"class":410},[119,675,676],{"class":414},"Save profile",[119,678,411],{"class":410},[119,680,659],{"class":151},[119,682,684],{"class":121,"line":683},36,[119,685,686],{"class":151},"                ]),\n",[119,688,690],{"class":121,"line":689},37,[119,691,692],{"class":151},"        ];\n",[119,694,696],{"class":121,"line":695},38,[119,697,698],{"class":151},"    }\n",[119,700,702],{"class":121,"line":701},39,[119,703,704],{"class":151},"}\n",[88,706,707,708,711,712,715,716,719,720,719,723,726,727,730],{},"Use Laravel validation rules directly with ",[104,709,710],{},"rule()"," or ",[104,713,714],{},"rules()",". Field helpers such as ",[104,717,718],{},"required()",", ",[104,721,722],{},"email()",[104,724,725],{},"maxLength()",", and ",[104,728,729],{},"image()"," add the corresponding managed rules and serialize useful client metadata.",[88,732,733,734,736],{},"This example uses the default managed upload strategy for ",[104,735,614],{},", so register the opt-in upload routes in the host application:",[109,738,741],{"className":111,"code":739,"filename":740,"language":114,"meta":115,"style":115},"use Illuminate\\Support\\Facades\\Route;\n\nRoute::inertiaFormUploads();\n","routes\u002Fweb.php",[104,742,743,767,771],{"__ignoreMap":115},[119,744,745,747,750,752,755,757,760,762,765],{"class":121,"line":122},[119,746,169],{"class":143},[119,748,749],{"class":129}," Illuminate",[119,751,152],{"class":151},[119,753,754],{"class":129},"Support",[119,756,152],{"class":151},[119,758,759],{"class":129},"Facades",[119,761,152],{"class":151},[119,763,764],{"class":185},"Route",[119,766,158],{"class":151},[119,768,769],{"class":121,"line":133},[119,770,137],{"emptyLinePlaceholder":136},[119,772,773,775,777,780],{"class":121,"line":140},[119,774,764],{"class":147},[119,776,401],{"class":125},[119,778,779],{"class":366},"inertiaFormUploads",[119,781,782],{"class":151},"();\n",[88,784,785],{},"Keep the default authentication middleware or replace it with application-specific authorization, tenant, and rate-limit middleware.",[96,787,789],{"id":788},"send-the-resource-through-inertia","Send the resource through Inertia",[88,791,792,793,796],{},"A form implements ",[104,794,795],{},"ProvidesInertiaProperty",", so pass it directly as an Inertia prop. The current request and owning prop key are supplied while it serializes.",[109,798,801],{"className":111,"code":799,"filename":800,"language":114,"meta":115,"style":115},"use App\\Forms\\ProfileForm;\nuse App\\Models\\Profile;\nuse Inertia\\Inertia;\nuse Inertia\\Response;\n\npublic function edit(Profile $profile): Response\n{\n    return Inertia::render('Profiles\u002FEdit', [\n        'form' => ProfileForm::make()\n            ->bind($profile, except: ['internal_note'])\n            ->route('profiles.update', ['profile' => $profile])\n            ->patch(),\n    ]);\n}\n","app\u002FHttp\u002FControllers\u002FProfileController.php",[104,802,803,820,837,851,864,868,896,900,925,946,982,1016,1025,1030],{"__ignoreMap":115},[119,804,805,807,809,811,813,815,818],{"class":121,"line":122},[119,806,169],{"class":143},[119,808,148],{"class":129},[119,810,152],{"class":151},[119,812,155],{"class":129},[119,814,152],{"class":151},[119,816,817],{"class":185},"ProfileForm",[119,819,158],{"class":151},[119,821,822,824,826,828,831,833,835],{"class":121,"line":133},[119,823,169],{"class":143},[119,825,148],{"class":129},[119,827,152],{"class":151},[119,829,830],{"class":129},"Models",[119,832,152],{"class":151},[119,834,415],{"class":185},[119,836,158],{"class":151},[119,838,839,841,844,846,849],{"class":121,"line":140},[119,840,169],{"class":143},[119,842,843],{"class":129}," Inertia",[119,845,152],{"class":151},[119,847,848],{"class":185},"Inertia",[119,850,158],{"class":151},[119,852,853,855,857,859,862],{"class":121,"line":161},[119,854,169],{"class":143},[119,856,843],{"class":129},[119,858,152],{"class":151},[119,860,861],{"class":185},"Response",[119,863,158],{"class":151},[119,865,866],{"class":121,"line":166},[119,867,137],{"emptyLinePlaceholder":136},[119,869,870,873,875,878,880,882,885,888,891,893],{"class":121,"line":191},[119,871,872],{"class":282},"public",[119,874,363],{"class":282},[119,876,877],{"class":366}," edit",[119,879,407],{"class":151},[119,881,415],{"class":147},[119,883,314],{"class":884},"sKlSU",[119,886,436],{"class":887},"sVbGb",[119,889,890],{"class":151},")",[119,892,373],{"class":125},[119,894,895],{"class":147}," Response\n",[119,897,898],{"class":121,"line":213},[119,899,301],{"class":151},[119,901,902,905,907,909,912,914,916,919,921,923],{"class":121,"line":235},[119,903,904],{"class":388},"    return",[119,906,843],{"class":147},[119,908,401],{"class":125},[119,910,911],{"class":366},"render",[119,913,407],{"class":151},[119,915,411],{"class":410},[119,917,918],{"class":414},"Profiles\u002FEdit",[119,920,411],{"class":410},[119,922,492],{"class":151},[119,924,392],{"class":151},[119,926,927,930,933,935,938,940,942,944],{"class":121,"line":257},[119,928,929],{"class":410},"        '",[119,931,932],{"class":414},"form",[119,934,411],{"class":410},[119,936,937],{"class":125}," =>",[119,939,289],{"class":147},[119,941,401],{"class":125},[119,943,404],{"class":366},[119,945,514],{"class":151},[119,947,948,951,954,956,959,961,963,967,969,972,974,977,979],{"class":121,"line":274},[119,949,950],{"class":125},"            ->",[119,952,953],{"class":366},"bind",[119,955,407],{"class":151},[119,957,958],{"class":313},"$",[119,960,436],{"class":129},[119,962,492],{"class":151},[119,964,966],{"class":965},"sRLcR"," except",[119,968,373],{"class":151},[119,970,971],{"class":151}," [",[119,973,411],{"class":410},[119,975,976],{"class":414},"internal_note",[119,978,411],{"class":410},[119,980,981],{"class":151},"])\n",[119,983,984,986,989,991,993,996,998,1000,1002,1004,1006,1008,1010,1012,1014],{"class":121,"line":279},[119,985,950],{"class":125},[119,987,988],{"class":366},"route",[119,990,407],{"class":151},[119,992,411],{"class":410},[119,994,995],{"class":414},"profiles.update",[119,997,411],{"class":410},[119,999,492],{"class":151},[119,1001,971],{"class":151},[119,1003,411],{"class":410},[119,1005,436],{"class":414},[119,1007,411],{"class":410},[119,1009,937],{"class":125},[119,1011,314],{"class":313},[119,1013,436],{"class":129},[119,1015,981],{"class":151},[119,1017,1018,1020,1023],{"class":121,"line":298},[119,1019,950],{"class":125},[119,1021,1022],{"class":366},"patch",[119,1024,541],{"class":151},[119,1026,1027],{"class":121,"line":304},[119,1028,1029],{"class":151},"    ]);\n",[119,1031,1032],{"class":121,"line":329},[119,1033,704],{"class":151},[88,1035,1036,1039,1040,1043,1044,1047],{},[104,1037,1038],{},"bind()"," accepts an Eloquent model or array. ",[104,1041,1042],{},"data([...])"," overrides bound values, and field defaults fill only missing paths. Nested defaults, including repeater rows, use dotted paths. Mark sensitive or computed fields with ",[104,1045,1046],{},"withoutModelBinding()"," when they should never inherit a model value.",[88,1049,1050,1051,711,1054,1057,1058,719,1061,719,1064,719,1067,719,1070,1073,1074,1077],{},"Actions may be set with ",[104,1052,1053],{},"route()",[104,1055,1056],{},"url()",". Use ",[104,1059,1060],{},"get()",[104,1062,1063],{},"post()",[104,1065,1066],{},"put()",[104,1068,1069],{},"patch()",[104,1071,1072],{},"delete()",", or ",[104,1075,1076],{},"method()"," to choose the HTTP method; a named Laravel route can also supply its method.",[96,1079,1081],{"id":1080},"validate-the-submission","Validate the submission",[88,1083,1084,1085,1088],{},"The contextual ",[104,1086,1087],{},"#[Validate]"," attribute resolves the typed form, attaches the current request, authorizes it, and validates it before the controller runs.",[109,1090,1092],{"className":111,"code":1091,"filename":800,"language":114,"meta":115,"style":115},"use App\\Forms\\ProfileForm;\nuse App\\Models\\Profile;\nuse Illuminate\\Http\\RedirectResponse;\nuse Inertify\\Form\\Validate;\n\npublic function update(\n    Profile $profile,\n    #[Validate] ProfileForm $form,\n): RedirectResponse {\n    $profile->update($form->validated(files: false));\n\n    if ($avatar = $form->upload('avatar')) {\n        $avatar->store('avatars', 'public');\n    }\n\n    return back()->with('success', 'Profile updated.');\n}\n",[104,1093,1094,1110,1126,1144,1161,1165,1177,1189,1202,1214,1251,1255,1292,1324,1328,1332,1366],{"__ignoreMap":115},[119,1095,1096,1098,1100,1102,1104,1106,1108],{"class":121,"line":122},[119,1097,169],{"class":143},[119,1099,148],{"class":129},[119,1101,152],{"class":151},[119,1103,155],{"class":129},[119,1105,152],{"class":151},[119,1107,817],{"class":185},[119,1109,158],{"class":151},[119,1111,1112,1114,1116,1118,1120,1122,1124],{"class":121,"line":133},[119,1113,169],{"class":143},[119,1115,148],{"class":129},[119,1117,152],{"class":151},[119,1119,830],{"class":129},[119,1121,152],{"class":151},[119,1123,415],{"class":185},[119,1125,158],{"class":151},[119,1127,1128,1130,1132,1134,1137,1139,1142],{"class":121,"line":140},[119,1129,169],{"class":143},[119,1131,749],{"class":129},[119,1133,152],{"class":151},[119,1135,1136],{"class":129},"Http",[119,1138,152],{"class":151},[119,1140,1141],{"class":185},"RedirectResponse",[119,1143,158],{"class":151},[119,1145,1146,1148,1150,1152,1154,1156,1159],{"class":121,"line":161},[119,1147,169],{"class":143},[119,1149,172],{"class":129},[119,1151,152],{"class":151},[119,1153,5],{"class":129},[119,1155,152],{"class":151},[119,1157,1158],{"class":185},"Validate",[119,1160,158],{"class":151},[119,1162,1163],{"class":121,"line":166},[119,1164,137],{"emptyLinePlaceholder":136},[119,1166,1167,1169,1171,1174],{"class":121,"line":191},[119,1168,872],{"class":282},[119,1170,363],{"class":282},[119,1172,1173],{"class":366}," update",[119,1175,1176],{"class":151},"(\n",[119,1178,1179,1182,1184,1186],{"class":121,"line":213},[119,1180,1181],{"class":147},"    Profile",[119,1183,314],{"class":884},[119,1185,436],{"class":887},[119,1187,1188],{"class":151},",\n",[119,1190,1191,1194,1196,1198,1200],{"class":121,"line":235},[119,1192,1193],{"class":185},"    #[Validate]",[119,1195,289],{"class":147},[119,1197,314],{"class":884},[119,1199,932],{"class":887},[119,1201,1188],{"class":151},[119,1203,1204,1206,1208,1211],{"class":121,"line":257},[119,1205,890],{"class":151},[119,1207,373],{"class":125},[119,1209,1210],{"class":147}," RedirectResponse",[119,1212,1213],{"class":151}," {\n",[119,1215,1216,1219,1221,1224,1227,1229,1231,1233,1235,1238,1240,1243,1245,1248],{"class":121,"line":274},[119,1217,1218],{"class":313},"    $",[119,1220,436],{"class":129},[119,1222,1223],{"class":125},"->",[119,1225,1226],{"class":366},"update",[119,1228,407],{"class":151},[119,1230,958],{"class":313},[119,1232,932],{"class":129},[119,1234,1223],{"class":125},[119,1236,1237],{"class":366},"validated",[119,1239,407],{"class":151},[119,1241,1242],{"class":965},"files",[119,1244,373],{"class":151},[119,1246,1247],{"class":323}," false",[119,1249,1250],{"class":151},"));\n",[119,1252,1253],{"class":121,"line":279},[119,1254,137],{"emptyLinePlaceholder":136},[119,1256,1257,1260,1263,1265,1268,1270,1272,1274,1276,1279,1281,1283,1285,1287,1290],{"class":121,"line":298},[119,1258,1259],{"class":388},"    if",[119,1261,1262],{"class":151}," (",[119,1264,958],{"class":313},[119,1266,1267],{"class":129},"avatar ",[119,1269,320],{"class":125},[119,1271,314],{"class":313},[119,1273,932],{"class":129},[119,1275,1223],{"class":125},[119,1277,1278],{"class":366},"upload",[119,1280,407],{"class":151},[119,1282,411],{"class":410},[119,1284,614],{"class":414},[119,1286,411],{"class":410},[119,1288,1289],{"class":151},"))",[119,1291,1213],{"class":151},[119,1293,1294,1297,1299,1301,1304,1306,1308,1311,1313,1315,1317,1319,1321],{"class":121,"line":304},[119,1295,1296],{"class":313},"        $",[119,1298,614],{"class":129},[119,1300,1223],{"class":125},[119,1302,1303],{"class":366},"store",[119,1305,407],{"class":151},[119,1307,411],{"class":410},[119,1309,1310],{"class":414},"avatars",[119,1312,411],{"class":410},[119,1314,492],{"class":151},[119,1316,495],{"class":410},[119,1318,872],{"class":414},[119,1320,411],{"class":410},[119,1322,1323],{"class":151},");\n",[119,1325,1326],{"class":121,"line":329},[119,1327,698],{"class":151},[119,1329,1330],{"class":121,"line":334},[119,1331,137],{"emptyLinePlaceholder":136},[119,1333,1334,1336,1339,1341,1343,1346,1348,1350,1353,1355,1357,1359,1362,1364],{"class":121,"line":352},[119,1335,904],{"class":388},[119,1337,1338],{"class":366}," back",[119,1340,370],{"class":151},[119,1342,1223],{"class":125},[119,1344,1345],{"class":366},"with",[119,1347,407],{"class":151},[119,1349,411],{"class":410},[119,1351,1352],{"class":414},"success",[119,1354,411],{"class":410},[119,1356,492],{"class":151},[119,1358,495],{"class":410},[119,1360,1361],{"class":414},"Profile updated.",[119,1363,411],{"class":410},[119,1365,1323],{"class":151},[119,1367,1368],{"class":121,"line":357},[119,1369,704],{"class":151},[88,1371,1372,1375,1376,1379,1380,1382,1383,711,1386,1389,1390,1393],{},[104,1373,1374],{},"validated()"," retains native files or secure upload tokens. ",[104,1377,1378],{},"validated(files: false)"," recursively removes every ",[104,1381,208],{}," value so file storage can be handled separately. Resolve token-based uploads with ",[104,1384,1385],{},"upload()",[104,1387,1388],{},"uploads()","; native ",[104,1391,1392],{},"storeWithForm()"," files remain in validated data and Laravel's request file bag.",[88,1395,1396,1397,719,1400,726,1403,1405],{},"For explicit control, call ",[104,1398,1399],{},"setRequest()",[104,1401,1402],{},"validate()",[104,1404,1374],{}," yourself:",[109,1407,1409],{"className":111,"code":1408,"language":114,"meta":115,"style":115},"$form = ProfileForm::make()->setRequest($request);\n$form->validate();\n\n$data = $form->validated(files: false);\n",[104,1410,1411,1442,1455,1459],{"__ignoreMap":115},[119,1412,1413,1415,1418,1420,1422,1424,1426,1428,1430,1433,1435,1437,1440],{"class":121,"line":122},[119,1414,958],{"class":313},[119,1416,1417],{"class":129},"form ",[119,1419,320],{"class":125},[119,1421,289],{"class":147},[119,1423,401],{"class":125},[119,1425,404],{"class":366},[119,1427,370],{"class":151},[119,1429,1223],{"class":125},[119,1431,1432],{"class":366},"setRequest",[119,1434,407],{"class":151},[119,1436,958],{"class":313},[119,1438,1439],{"class":129},"request",[119,1441,1323],{"class":151},[119,1443,1444,1446,1448,1450,1453],{"class":121,"line":133},[119,1445,958],{"class":313},[119,1447,932],{"class":129},[119,1449,1223],{"class":125},[119,1451,1452],{"class":366},"validate",[119,1454,782],{"class":151},[119,1456,1457],{"class":121,"line":140},[119,1458,137],{"emptyLinePlaceholder":136},[119,1460,1461,1463,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484],{"class":121,"line":161},[119,1462,958],{"class":313},[119,1464,1465],{"class":129},"data ",[119,1467,320],{"class":125},[119,1469,314],{"class":313},[119,1471,932],{"class":129},[119,1473,1223],{"class":125},[119,1475,1237],{"class":366},[119,1477,407],{"class":151},[119,1479,1242],{"class":965},[119,1481,373],{"class":151},[119,1483,1247],{"class":323},[119,1485,1323],{"class":151},[88,1487,1488,1489,1492,1493,1496,1497,1500],{},"Override ",[104,1490,1491],{},"messages()"," and ",[104,1494,1495],{},"attributes()"," on the form to customize Laravel validation output. Fields marked ",[104,1498,1499],{},"precognitive()"," can be validated individually by the Vue engine with Laravel Precognition; stale client requests are cancelled automatically.",[96,1502,1504],{"id":1503},"authorize-the-resource","Authorize the resource",[88,1506,1507,1508,719,1511,726,1514,1517],{},"Forms, fieldsets, and fields support ",[104,1509,1510],{},"authorize()",[104,1512,1513],{},"authorizedWhen()",[104,1515,1516],{},"authorizedUnless()",".",[109,1519,1521],{"className":111,"code":1520,"language":114,"meta":115,"style":115},"TextInput::make('internal_note')\n    ->authorize(fn (): bool => auth()->user()->can('editInternalNotes'));\n",[104,1522,1523,1541],{"__ignoreMap":115},[119,1524,1525,1527,1529,1531,1533,1535,1537,1539],{"class":121,"line":122},[119,1526,252],{"class":147},[119,1528,401],{"class":125},[119,1530,404],{"class":366},[119,1532,407],{"class":151},[119,1534,411],{"class":410},[119,1536,976],{"class":414},[119,1538,411],{"class":410},[119,1540,420],{"class":151},[119,1542,1543,1546,1549,1551,1554,1557,1559,1561,1563,1566,1568,1570,1573,1575,1577,1580,1582,1584,1587,1589],{"class":121,"line":133},[119,1544,1545],{"class":125},"    ->",[119,1547,1548],{"class":366},"authorize",[119,1550,407],{"class":151},[119,1552,1553],{"class":282},"fn",[119,1555,1556],{"class":151}," ()",[119,1558,373],{"class":125},[119,1560,310],{"class":143},[119,1562,937],{"class":151},[119,1564,1565],{"class":366}," auth",[119,1567,370],{"class":151},[119,1569,1223],{"class":125},[119,1571,1572],{"class":366},"user",[119,1574,370],{"class":151},[119,1576,1223],{"class":125},[119,1578,1579],{"class":366},"can",[119,1581,407],{"class":151},[119,1583,411],{"class":410},[119,1585,1586],{"class":414},"editInternalNotes",[119,1588,411],{"class":410},[119,1590,1250],{"class":151},[88,1592,1593,1594,1597],{},"Unauthorized fields are omitted from schema, initial data, and validation rules. An unauthorized form serializes as an empty resource unless ",[104,1595,1596],{},"inertia-forms.authorization.throw_on_unauthorized"," is enabled, while validating an unauthorized form always throws an authorization exception.",[1599,1600,1601],"style",{},"html pre.shiki code .sWTNM, html code.shiki .sWTNM{--shiki-light:#39ADB5;--shiki-default:#94E2D5;--shiki-dark:#94E2D5}html pre.shiki code .svMjs, html code.shiki .svMjs{--shiki-light:#90A4AE;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .scOca, html code.shiki .scOca{--shiki-light:#F76D47;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}html pre.shiki code .s6-7G, html code.shiki .s6-7G{--shiki-light:#E2931D;--shiki-light-font-style:inherit;--shiki-default:#F9E2AF;--shiki-default-font-style:italic;--shiki-dark:#F9E2AF;--shiki-dark-font-style:italic}html pre.shiki code .sOG8g, html code.shiki .sOG8g{--shiki-light:#39ADB5;--shiki-default:#9399B2;--shiki-dark:#9399B2}html pre.shiki code .spKqO, html code.shiki .spKqO{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#F9E2AF;--shiki-default-font-style:italic;--shiki-dark:#F9E2AF;--shiki-dark-font-style:italic}html pre.shiki code .sNFzF, html code.shiki .sNFzF{--shiki-light:#9C3EDA;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}html pre.shiki code .sxSEj, html code.shiki .sxSEj{--shiki-light:#39ADB5;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}html pre.shiki code .s27pR, html code.shiki .s27pR{--shiki-light:#39ADB5;--shiki-default:#CBA6F7;--shiki-dark:#CBA6F7}html pre.shiki code .sgeHj, html code.shiki .sgeHj{--shiki-light:#6182B8;--shiki-light-font-style:inherit;--shiki-default:#89B4FA;--shiki-default-font-style:italic;--shiki-dark:#89B4FA;--shiki-dark-font-style:italic}html pre.shiki code .su_vF, html code.shiki .su_vF{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#CBA6F7;--shiki-default-font-style:inherit;--shiki-dark:#CBA6F7;--shiki-dark-font-style:inherit}html pre.shiki code .sQGZM, html code.shiki .sQGZM{--shiki-light:#39ADB5;--shiki-default:#A6E3A1;--shiki-dark:#A6E3A1}html pre.shiki code .s2lAL, html code.shiki .s2lAL{--shiki-light:#91B859;--shiki-default:#A6E3A1;--shiki-dark:#A6E3A1}html pre.shiki code .sCOdc, html code.shiki .sCOdc{--shiki-light:#F76D47;--shiki-default:#FAB387;--shiki-dark:#FAB387}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sKlSU, html code.shiki .sKlSU{--shiki-light:#39ADB5;--shiki-default:#EBA0AC;--shiki-dark:#EBA0AC}html pre.shiki code .sVbGb, html code.shiki .sVbGb{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#EBA0AC;--shiki-default-font-style:italic;--shiki-dark:#EBA0AC;--shiki-dark-font-style:italic}html pre.shiki code .sRLcR, html code.shiki .sRLcR{--shiki-light:#E2931D;--shiki-default:#CDD6F4;--shiki-dark:#CDD6F4}",{"title":115,"searchDepth":133,"depth":133,"links":1603},[1604,1605,1606,1607],{"id":98,"depth":133,"text":99},{"id":788,"depth":133,"text":789},{"id":1080,"depth":133,"text":1081},{"id":1503,"depth":133,"text":1504},"Define a Laravel form, send its resource through Inertia, and validate it on submission.","md",null,{},{"title":32,"description":1608},"e1Z54otd794Od63t6uBRyud02pgtSc_pmzXL8QkHlmU",[1615,1617],{"title":22,"path":23,"stem":24,"description":1616,"children":-1},"Connect a serialized form to application-owned Vue components without package markup or styles.",{"title":35,"path":36,"stem":37,"description":1618,"children":-1},"Configure field behavior, metadata, authorization, and reactive conditional visibility.",1786995560669]