Skip to content

Commit 4ed4591

Browse files
update readme
1 parent d06ebd6 commit 4ed4591

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

README.md

+69
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,75 @@ If you add the `--no-interaction` option when running the command, it will submi
120120

121121
If the submitted data is invalid the command will fail.
122122

123+
124+
## Using simpler forms with custom names
125+
126+
```php
127+
<?php
128+
129+
use Symfony\Component\Console\Command\Command;
130+
use Symfony\Component\Console\Input\InputInterface;
131+
use Symfony\Component\Console\Input\InputOption;
132+
use Symfony\Component\Console\Output\OutputInterface;
133+
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
134+
use Matthias\SymfonyConsoleForm\Console\Helper\FormHelper;
135+
136+
class TestCommand extends Command
137+
{
138+
protected function configure()
139+
{
140+
$this->setName('form:demo');
141+
$this->addOption('custom-option', null, InputOption::VALUE_OPTIONAL, 'Your custom option', 'option1')
142+
}
143+
144+
protected function execute(InputInterface $input, OutputInterface $output)
145+
{
146+
$formHelper = $this->getHelper('form');
147+
/** @var FormHelper $formHelper */
148+
149+
$formData = $formHelper->interactUsingNamedForm('custom-option', ChoiceType::class, $input, $output, [
150+
'label' => 'Your label',
151+
'help' => 'Additional information to help the interaction',
152+
'choices' => [
153+
'Default value label' => 'option1',
154+
'Another value Label' => 'option2',
155+
]
156+
]);
157+
158+
// $formData will be "option1" or "option2" and option "--custom-option" will be used as default value
159+
...
160+
}
161+
}
162+
```
163+
164+
## Nested Forms
165+
166+
If you have a complex compound form, you can define options and reference form children using square brackets:
167+
168+
```php
169+
<?php
170+
171+
use Symfony\Component\Console\Command\Command;
172+
use Symfony\Component\Console\Input\InputInterface;
173+
use Symfony\Component\Console\Output\OutputInterface;
174+
use Matthias\SymfonyConsoleForm\Console\Helper\FormHelper;
175+
176+
class TestCommand extends Command
177+
{
178+
protected function configure()
179+
{
180+
$this
181+
->addOption('user[username]', null, InputOption::VALUE_OPTIONAL)
182+
->addOption('user[email]', null, InputOption::VALUE_OPTIONAL)
183+
->addOption('user[address][street]', null, InputOption::VALUE_OPTIONAL)
184+
->addOption('user[address][city]', null, InputOption::VALUE_OPTIONAL)
185+
->addOption('acceptTerms', null, InputOption::VALUE_OPTIONAL)
186+
;
187+
}
188+
...
189+
}
190+
```
191+
123192
# TODO
124193

125194
- Maybe: provide a way to submit a form at once, possibly using a JSON-encoded array

0 commit comments

Comments
 (0)