-
-
Save webmozart/3256975 to your computer and use it in GitHub Desktop.
| { | |
| "require": { | |
| "symfony/form": "2.1.*", | |
| "symfony/validator": "2.1.*", | |
| "symfony/templating": "2.1.*", | |
| "symfony/framework-bundle": "2.1.*" | |
| }, | |
| "minimum-stability": "dev" | |
| } |
| <html> | |
| <head> | |
| <title>Standalone Form Component</title> | |
| </head> | |
| <body> | |
| <form action="#" method="post"> | |
| <?php echo $view['form']->widget($form); ?> | |
| <input type="submit" /> | |
| </form> | |
| </body> | |
| </html> |
| <?php | |
| use Symfony\Component\Validator\Validation; | |
| use Symfony\Component\Validator\Constraints\MinLength; | |
| use Symfony\Component\Validator\Constraints\NotBlank; | |
| use Symfony\Component\Form\Forms; | |
| use Symfony\Component\Form\Extension\Validator\ValidatorExtension; | |
| use Symfony\Component\Form\Extension\Templating\TemplatingExtension; | |
| use Symfony\Component\Form\Extension\Csrf\CsrfExtension; | |
| use Symfony\Component\Form\Extension\Csrf\CsrfProvider\DefaultCsrfProvider; | |
| use Symfony\Component\Templating\PhpEngine; | |
| use Symfony\Component\Templating\TemplateReference; | |
| use Symfony\Component\Templating\TemplateNameParserInterface; | |
| use Symfony\Component\Templating\Loader\FilesystemLoader; | |
| use Symfony\Component\Translation\Translator; | |
| use Symfony\Component\Translation\Loader\XliffFileLoader; | |
| use Symfony\Bundle\FrameworkBundle\Templating\Helper\TranslatorHelper; | |
| require __DIR__ . '/../vendor/autoload.php'; | |
| class SimpleTemplateNameParser implements TemplateNameParserInterface | |
| { | |
| private $root; | |
| public function __construct($root) | |
| { | |
| $this->root = $root; | |
| } | |
| public function parse($name) | |
| { | |
| if (false !== strpos($name, ':')) { | |
| $path = str_replace(':', '/', $name); | |
| } else { | |
| $path = $this->root . '/' . $name; | |
| } | |
| return new TemplateReference($path, 'php'); | |
| } | |
| } | |
| // Overwrite this with your own secret | |
| $csrfSecret = 'c2ioeEU1n48QF2WsHGWd2HmiuUUT6dxr'; | |
| // Set up requirements - hopefully we can facilitate this more in 2.2 | |
| $validator = Validation::createValidator(); | |
| $translator = new Translator('en'); | |
| $translator->addLoader('xlf', new XliffFileLoader()); | |
| $translator->addResource('xlf', realpath(__DIR__ . '/../vendor/symfony/form/Symfony/Component/Form/Resources/translations/validators.en.xlf'), 'en', 'validators'); | |
| $translator->addResource('xlf', realpath(__DIR__ . '/../vendor/symfony/validator/Symfony/Component/Validator/Resources/translations/validators.en.xlf'), 'en', 'validators'); | |
| $engine = new PhpEngine(new SimpleTemplateNameParser(realpath(__DIR__ . '/../views')), new FilesystemLoader(array())); | |
| $engine->addHelpers(array(new TranslatorHelper($translator))); | |
| // Set up the form factory with all desired extensions | |
| $formFactory = Forms::createFormFactoryBuilder() | |
| ->addExtension(new CsrfExtension(new DefaultCsrfProvider($csrfSecret))) | |
| ->addExtension(new TemplatingExtension($engine, null, array( | |
| // Will hopefully not be necessary anymore in 2.2 | |
| realpath(__DIR__ . '/../vendor/symfony/framework-bundle/Symfony/Bundle/FrameworkBundle/Resources/views/Form'), | |
| ))) | |
| ->addExtension(new ValidatorExtension($validator)) | |
| ->getFormFactory(); | |
| // Create our first form! | |
| $form = $formFactory->createBuilder() | |
| ->add('firstName', 'text', array( | |
| 'constraints' => array( | |
| new NotBlank(), | |
| new MinLength(4), | |
| ), | |
| )) | |
| ->add('lastName', 'text', array( | |
| 'constraints' => array( | |
| new NotBlank(), | |
| new MinLength(4), | |
| ), | |
| )) | |
| ->add('gender', 'choice', array( | |
| 'choices' => array('m' => 'Male', 'f' => 'Female'), | |
| )) | |
| ->add('newsletter', 'checkbox', array( | |
| 'required' => false, | |
| )) | |
| ->getForm(); | |
| if (isset($_POST[$form->getName()])) { | |
| $form->bind($_POST[$form->getName()]); | |
| if ($form->isValid()) { | |
| var_dump('VALID', $form->getData()); | |
| die; | |
| } | |
| } | |
| echo $engine->render('index.html.php', array( | |
| 'form' => $form->createView(), | |
| )); |
I downloaded https://github.com/bschussek/standalone-forms then I downloaded the dependences with composer and everything was fine.
But I'm getting the same error:
Fatal error: Uncaught exception 'Symfony\Component\Form\Exception\FormException' with message 'Unable to render the form as none of the following blocks exist: "_form_widget", "form_widget".' in ...dev\standalone-forms\vendor\symfony\form\Symfony\Component\Form\FormRenderer.php:221
I am getting the above error as well, it seems to be when the renderBlock function is triggered and there is no resource available in the array to be built and therefore returns false every time.
This is for both Twig and PHP versions.
IMPORTANT NOTICE: Please clone https://github.com/bschussek/standalone-forms instead of trying to reproduce this Gist. I just updated the vendors and tested that project again, and everything worked for me out of the box.
Oh yeah. I forgot something. My versions.
Output from Composer
C:\xampp\htdocs\FormTrial4>php composer.phar install
Installing dependencies
Cloning 2ec4bc6db13db6a0976a16b71058083c55cbcdbd
Cloning 6a1159eb868b3af059d0a8c578db1f7efab89850
Cloning 58ff3213b4e187f410d6795a1da11dfde8a0e118
Cloning 76c76f62702b09e0f182ae618be0f1d79e2a711f
Cloning 74583bb7a8ed758c29431b4900467db04ddd0b32
Cloning 2794f1d7bfea5c017c50f870ca1bf2dd1c363f03
Cloning d7a6083e76a3af3f247bff523bc47b41e7208a87
Cloning v2.1.0-RC1
Cloning v2.1.0-RC1
Cloning 72acf65c2390c9066e1174d269a4e146ffad9296
Cloning 8d5e7f909fa519853e71bcfc57a1da8c637ebcbb
Cloning 0d0ee371ab0425f3399dba9e25d7ad98ca5c0d62
Cloning f68ad44f3ee1603ce96387bacba0ecba488c2a33
Cloning 98fa735a7ef5dc07c43bfe6faa4367a983b6ba6f
Cloning 4f0d296b4414cb5322e7ee45af117e5234bc75d0
symfony/validator suggests installing symfony/yaml (dev-master)
symfony/translation suggests installing symfony/yaml (dev-master)
symfony/routing suggests installing symfony/yaml (dev-master)
symfony/http-kernel suggests installing symfony/browser-kit (dev-master)
symfony/http-kernel suggests installing symfony/class-loader (dev-master)
symfony/http-kernel suggests installing symfony/console (dev-master)
symfony/http-kernel suggests installing symfony/finder (dev-master)
symfony/dependency-injection suggests installing symfony/yaml (dev-master)
symfony/framework-bundle suggests installing symfony/console (dev-master)
symfony/framework-bundle suggests installing symfony/finder (dev-master)
Writing lock file
Generating autoload files
gist3256975-6c5ede69a9a07f3a09c3c32ee37543885a4c0f2a.tar.gz