Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Sign in
Toggle navigation
S
Silex
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
common
Silex
Commits
3af0b910
Commit
3af0b910
authored
Jan 08, 2015
by
Fabien Potencier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed Symfony Form Component deprecations
parent
1c7dd57d
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
84 additions
and
20 deletions
+84
-20
src/Silex/Provider/FormServiceProvider.php
src/Silex/Provider/FormServiceProvider.php
+15
-4
tests/Silex/Tests/Provider/FormServiceProviderTest.php
tests/Silex/Tests/Provider/FormServiceProviderTest.php
+68
-15
tests/Silex/Tests/Provider/ValidatorServiceProviderTest.php
tests/Silex/Tests/Provider/ValidatorServiceProviderTest.php
+1
-1
No files found.
src/Silex/Provider/FormServiceProvider.php
View file @
3af0b910
...
@@ -20,6 +20,9 @@ use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationExtension;
...
@@ -20,6 +20,9 @@ use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationExtension;
use
Symfony\Component\Form\Extension\Validator\ValidatorExtension
as
FormValidatorExtension
;
use
Symfony\Component\Form\Extension\Validator\ValidatorExtension
as
FormValidatorExtension
;
use
Symfony\Component\Form\Forms
;
use
Symfony\Component\Form\Forms
;
use
Symfony\Component\Form\ResolvedFormTypeFactory
;
use
Symfony\Component\Form\ResolvedFormTypeFactory
;
use
Symfony\Component\Security\Csrf\CsrfTokenManager
;
use
Symfony\Component\Security\Csrf\TokenStorage\NativeSessionTokenStorage
;
use
Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage
;
/**
/**
* Symfony Form component Provider.
* Symfony Form component Provider.
...
@@ -104,11 +107,19 @@ class FormServiceProvider implements ServiceProviderInterface
...
@@ -104,11 +107,19 @@ class FormServiceProvider implements ServiceProviderInterface
});
});
$app
[
'form.csrf_provider'
]
=
$app
->
share
(
function
(
$app
)
{
$app
[
'form.csrf_provider'
]
=
$app
->
share
(
function
(
$app
)
{
if
(
!
class_exists
(
'Symfony\Component\Form\Extension\DataCollector\DataCollectorExtension'
))
{
// Symfony 2.3
if
(
isset
(
$app
[
'session'
]))
{
if
(
isset
(
$app
[
'session'
]))
{
return
new
SessionCsrfProvider
(
$app
[
'session'
],
$app
[
'form.secret'
]);
return
new
SessionCsrfProvider
(
$app
[
'session'
],
$app
[
'form.secret'
]);
}
}
return
new
DefaultCsrfProvider
(
$app
[
'form.secret'
]);
return
new
DefaultCsrfProvider
(
$app
[
'form.secret'
]);
}
else
{
// Symfony 2.4+
$storage
=
isset
(
$app
[
'session'
])
?
new
SessionTokenStorage
(
$app
[
'session'
])
:
new
NativeSessionTokenStorage
();
return
new
CsrfTokenManager
(
null
,
$storage
);
}
});
});
}
}
...
...
tests/Silex/Tests/Provider/FormServiceProviderTest.php
View file @
3af0b910
...
@@ -20,8 +20,11 @@ use Symfony\Component\Form\AbstractTypeExtension;
...
@@ -20,8 +20,11 @@ use Symfony\Component\Form\AbstractTypeExtension;
use
Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface
;
use
Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface
;
use
Symfony\Component\Form\FormTypeGuesserChain
;
use
Symfony\Component\Form\FormTypeGuesserChain
;
use
Symfony\Component\HttpFoundation\Request
;
use
Symfony\Component\HttpFoundation\Request
;
use
Symfony\Component\OptionsResolver\OptionsResolver
;
use
Symfony\Component\OptionsResolver\OptionsResolverInterface
;
use
Symfony\Component\OptionsResolver\OptionsResolverInterface
;
use
Symfony\Component\Translation\Exception\NotFoundResourceException
;
use
Symfony\Component\Translation\Exception\NotFoundResourceException
;
use
Symfony\Component\Security\Csrf\CsrfToken
;
use
Symfony\Component\Security\Csrf\CsrfTokenManagerInterface
;
class
FormServiceProviderTest
extends
\PHPUnit_Framework_TestCase
class
FormServiceProviderTest
extends
\PHPUnit_Framework_TestCase
{
{
...
@@ -112,7 +115,13 @@ class FormServiceProviderTest extends \PHPUnit_Framework_TestCase
...
@@ -112,7 +115,13 @@ class FormServiceProviderTest extends \PHPUnit_Framework_TestCase
))));
))));
$this
->
assertFalse
(
$form
->
isValid
());
$this
->
assertFalse
(
$form
->
isValid
());
$r
=
new
\ReflectionMethod
(
$form
,
'getErrors'
);
if
(
!
$r
->
getNumberOfParameters
())
{
$this
->
assertContains
(
'ERROR: German translation'
,
$form
->
getErrorsAsString
());
$this
->
assertContains
(
'ERROR: German translation'
,
$form
->
getErrorsAsString
());
}
else
{
// as of 2.5
$this
->
assertContains
(
'ERROR: German translation'
,
(
string
)
$form
->
getErrors
(
true
,
false
));
}
}
}
public
function
testFormServiceProviderWillNotAddNonexistentTranslationFiles
()
public
function
testFormServiceProviderWillNotAddNonexistentTranslationFiles
()
...
@@ -149,8 +158,22 @@ class DummyFormType extends AbstractType
...
@@ -149,8 +158,22 @@ class DummyFormType extends AbstractType
}
}
}
}
class
DummyFormTypeExtension
extends
AbstractTypeExtension
if
(
method_exists
(
'Symfony\Component\Form\AbstractType'
,
'configureOptions'
))
{
{
class
DummyFormTypeExtension
extends
AbstractTypeExtension
{
public
function
getExtendedType
()
{
return
'file'
;
}
public
function
configureOptions
(
OptionsResolver
$resolver
)
{
$resolver
->
setDefined
(
array
(
'image_path'
));
}
}
}
else
{
class
DummyFormTypeExtension
extends
AbstractTypeExtension
{
public
function
getExtendedType
()
public
function
getExtendedType
()
{
{
return
'file'
;
return
'file'
;
...
@@ -158,12 +181,19 @@ class DummyFormTypeExtension extends AbstractTypeExtension
...
@@ -158,12 +181,19 @@ class DummyFormTypeExtension extends AbstractTypeExtension
public
function
setDefaultOptions
(
OptionsResolverInterface
$resolver
)
public
function
setDefaultOptions
(
OptionsResolverInterface
$resolver
)
{
{
if
(
!
method_exists
(
$resolver
,
'setDefined'
))
{
$resolver
->
setOptional
(
array
(
'image_path'
));
$resolver
->
setOptional
(
array
(
'image_path'
));
}
else
{
$resolver
->
setDefined
(
array
(
'image_path'
));
}
}
}
}
}
}
class
FakeCsrfProvider
implements
CsrfProviderInterface
if
(
!
class_exists
(
'Symfony\Component\Form\Extension\DataCollector\DataCollectorExtension'
))
{
{
// Symfony 2.3 only
class
FakeCsrfProvider
implements
CsrfProviderInterface
{
public
function
generateCsrfToken
(
$intention
)
public
function
generateCsrfToken
(
$intention
)
{
{
return
$intention
.
'123'
;
return
$intention
.
'123'
;
...
@@ -173,4 +203,27 @@ class FakeCsrfProvider implements CsrfProviderInterface
...
@@ -173,4 +203,27 @@ class FakeCsrfProvider implements CsrfProviderInterface
{
{
return
$token
===
$this
->
generateCsrfToken
(
$intention
);
return
$token
===
$this
->
generateCsrfToken
(
$intention
);
}
}
}
}
else
{
class
FakeCsrfProvider
implements
CsrfTokenManagerInterface
{
public
function
getToken
(
$tokenId
)
{
return
new
CsrfToken
(
$tokenId
,
'123'
);
}
public
function
refreshToken
(
$tokenId
)
{
return
new
CsrfToken
(
$tokenId
,
'123'
);
}
public
function
removeToken
(
$tokenId
)
{
}
public
function
isTokenValid
(
CsrfToken
$token
)
{
return
'123'
===
$token
->
getValue
();
}
}
}
}
tests/Silex/Tests/Provider/ValidatorServiceProviderTest.php
View file @
3af0b910
...
@@ -98,7 +98,7 @@ class ValidatorServiceProviderTest extends \PHPUnit_Framework_TestCase
...
@@ -98,7 +98,7 @@ class ValidatorServiceProviderTest extends \PHPUnit_Framework_TestCase
->
getForm
()
->
getForm
()
;
;
$form
->
bind
(
array
(
'email'
=>
$email
));
$form
->
submit
(
array
(
'email'
=>
$email
));
$this
->
assertEquals
(
$isValid
,
$form
->
isValid
());
$this
->
assertEquals
(
$isValid
,
$form
->
isValid
());
$this
->
assertEquals
(
$nbGlobalError
,
count
(
$form
->
getErrors
()));
$this
->
assertEquals
(
$nbGlobalError
,
count
(
$form
->
getErrors
()));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment