Use a Different Form Library
Welder is one option, not a requirement. Plain HTML forms processed with $request sanitizers are perfectly idiomatic — and any third-party form library plugs in without ceremony.
Plain HTML + sanitizers
For the long tail of small forms, you don't need a library at all. Write the markup yourself and use the request sanitizers (covered in Request) for validation:
<!-- app/views/contact.phtml -->
<form method="post" action="/contact">
<input name="name" value="<?=esc($_POST['name'] ?? '')?>">
<input name="email" value="<?=esc($_POST['email'] ?? '')?>">
<textarea name="message"><?=esc($_POST['message'] ?? '')?></textarea>
<button type="submit">Send</button>
</form>
// app/controllers/contact.php
$errors = [];
if ($request->method === 'POST') {
$name = $request->post->name('name');
$email = $request->post->email('email');
$message = trim($request->post->sanitize('message', 1));
if ($name === '') $errors['name'] = 'Name is required.';
if ($email === '') $errors['email'] = 'Valid email required.';
if ($message === '') $errors['message'] = 'Message is required.';
if (!$errors) {
// ...save, send mail, etc.
\True\App::go('/contact/thanks');
}
}
$vars = compact('errors');
Symfony Forms
If you're already using Symfony components elsewhere, drop the form bundle in:
composer require symfony/form symfony/validator symfony/translation
Build a form factory once during bootstrap, then use it from controllers like you would in any Symfony app — TrueFramework doesn't care.
Laravel Collective Forms (or anything else)
Same idea. The form library lives in your composer dependencies and your controllers. The framework only cares that you eventually call $App->view->render(...) or $App->response(...) to finish the request.
Removing Welder
If you don't plan to use it:
composer remove truecastdesign/welder
Nothing in true or hopper depends on it.
Mixing approaches
Many real apps end up with both — Welder handles the dozens of simple contact-form-style submissions where its validate() + get() shorthand pays for itself, while heavier user-facing forms (multi-step wizards, dynamic field sets) lean on a richer library or roll their own.