このページの翻訳:
- 日本語 (ja)
- English (en)
最近の更新
- 麻雀ルール [チップ・焼鳥について]
- 71 vsftpd [Difference Between PASV Mode and ACTIVE Mode]
- 2024.07.02 Windowsライセンス有効期限 [ライセンスの有効期限を確認方法]
最近の更新
フォームが簡単に作成できる。
・controler
<?php
require_once __DIR__.'/vendor/autoload.php';
use Silex\Provider\FormServiceProvider;
$app = new Silex\Application();
$app['debug'] = true;
$app->register(new FormServiceProvider());
$app->register(new Silex\Provider\TranslationServiceProvider(), array(
'locale_fallback' => 'en',
));
/* Twig Provider 登録
---------------- */
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__ . '/views',
'twig.options' => array(
'autoescape' => true,
),
));
$app->match('/form', function() use($app) {
$data = array(
'name' => 'Your name',
'email' => 'Your email',
);
$form = $app['form.factory']->createBuilder('form', $data)
->add('name')
->add('email')
->add('gender', 'choice', array(
'choices' => array(1 => 'male', 2 => 'female'),
'expanded' => true,
))
->getForm();
if ('POST' == $app['request']->getMethod()) {
$form->bind($app['request']);
if ($form->isValid()) {
$data = $form->getData();
// do something with the data
// redirect somewhere
//return $app->redirect('...');
return print_r($data);
}
}
// display the form
return $app['twig']->render('form.html.twig', array('form' => $form->createView()));
});
$app->run();
・form.html.twig
<html> <body> フォームテスト <form action="#" method="post"> {{ form_widget(form) }} <input type="submit" name="submit" /> </form> </body> </html>
Twig_Error_Syntax: The filter "trans" does not exist in "form_div_layout.html.twig" at line 73
https://github.com/fabpot/Silex/issues/271
TranslationServiceProviderを登録しないと、上記のエラーが出ます。
PHP側で行う場合
->add('username', 'text', array( 'attr' => array( 'placeholder'=>'User Name', 'class'=>'span_name', ) ) )
Twig側で行う場合
{{ form_widget(form.password, { 'attr': { 'class': 'span_name' , 'placeholder' : 'User Name'} }) }}
PHP側で行う場合
->add('username', 'text', array( 'label_attr' => array( 'class' => 'control-label' ) ) )
Twig側で行う場合
{{ form_label(form.username, null, { 'label_attr': { 'class': 'control-label'} } ) }}
Twig テンプレートのなかで form_widget_form.comment のように個別のプロパティを指定すると、
isValid メソッドが常に false を返してしまいます。
レンダリングされていないすべてのフィールドをレンダリングします。
{{ form_label(form.username) }} {{ form_errors(form.username) }} {{ form_widget(form.username}} {{ form_label(form.password) }} {{ form_errors(form.password) }} {{ form_widget(form.password, { 'attr': { 'class': 'span2', 'placeholder' : 'Password'} }) }} {{ form_rest(form) }}
もしくは、csrf対策のトークンを設定しない場合は、下記のように「'csrf_protection' ⇒ false)」してあげる。
$form = $app['form.factory']->createBuilder('form', $data, array('csrf_protection' => false) )