Reputation: 23
I'm having trouble getting the client side part working. The 1st problem I have is, it is only loading quickform.js script, not the other 2. So I load them in the head for now. But still my problem is the form only validates client side. I feel like I am missing something obvious??
require_once('HTML/QuickForm2.php');
require_once ('HTML/QuickForm2/Renderer.php');
require_once ('HTML/QuickForm2/JavascriptBuilder.php');
$form = new HTML_QuickForm2('uploads');
$fieldset = $form->addElement('fieldset');
$name = $fieldset->addElement('text', 'name', array('size' => 50, 'maxlength' => 255))->setLabel('Enter your name:');
$fieldset->addElement('submit', null, array('value' => 'Send!'));
$name->addFilter('trim');
$name->addRule('required', 'Please enter your name');
if ($form->validate()) {
echo '<h1>Hello, ' . htmlspecialchars($name->getValue()) . '!</h1>';
exit;
}
$renderer = HTML_QuickForm2_Renderer::factory('default');
$renderer->setJavascriptBuilder(new HTML_QuickForm2_JavascriptBuilder('js/quickform2'));
$form->render($renderer);
foreach ($renderer->getJavascriptBuilder()->getLibraries() as $link) {
echo $link . "\n";
}
echo $renderer;
Upvotes: 0
Views: 604
Reputation: 251
The point of using JavascriptBuilder is to load libraries only when they are needed, so "the other 2" will only be loaded when you use the corresponding elements (hierselect and repeat).
As for "only validates client side" you probably mean "server side" and you are missing an argument to addRule():
$name->addRule('required', 'Please enter your name', null, HTML_QuickForm2_Rule::CLIENT_SERVER);
Upvotes: 1