このドキュメントでは、Symfony2 の特定のバージョンから1つ次のバージョンへアップデートする方法を説明します。 このドキュメントでは、フレームワークの "パブリックな" APIを使っている場合に必要な変更点についてのみ説明しています。 フレームワークのコアコードを "ハック" している場合は、変更履歴を注意深く追跡する必要があるでしょう。
-
EntityUserProviderクラスは Bridge へ移動されました。 FQCN はSymfony\Component\Security\Core\User\EntityUserProviderからSymfony\Bridge\Doctrine\Security\User\EntityUserProviderに変更になります。 -
HeaderBagからの Cookie アクセスが削除されました。 リクエスト Cookie へのアクセスには、Request::$cookiesを使ってください。 -
ResponseHeaderBag::getCookie()メソッドとResponseHeaderBag::hasCookie()メソッドは削除されました。 -
ResponseHeaderBag::getCookies()メソッドの引数で、戻り値のフォーマットを指定できるようになりました。指定できる値はResponseHeaderBag::COOKIES_FLAT(デフォルト値) またはResponseHeaderBag::COOKIES_ARRAYです。-
ResponseHeaderBag::COOKIES_FLATを指定すると、戻り値は単純な配列になります(配列のキーは、Cookie の名前ではなくなります):- array(0 =>
Cookie インスタンス, 1 =>別の Cookie インスタンス)
- array(0 =>
-
ResponseHeaderBag::COOKIES_ARRAYを指定すると、戻り値は多次元配列になります:- array(
ドメイン=> array(パス=> array(Cookie 名=>Cookie インスタンス)))
- array(
-
-
制約は有効となったキーのみを保持し、その値は保持していないため、Choice 制約の推測クラス(Guesser)は削除されました。
-
MonologBundle の設定のリファクタリングが行われました。
-
プロセッサでサポートされるのは、サービスのみです。このサービスは
monolog.processorタグを使って登録します。次の 3 つの属性を指定できます:handler: 特定のハンドラーのみに対して登録する場合、そのハンドラーの名前channel: 特定のロギングチャンネルのみに対して登録する場合のチャンネル (handlerとどちらか一方のみを指定)method: レコードの処理に使用するメソッド (指定しない場合は__invokeが使われます)
-
SwiftMailerHandlerの email_prototype 設定に指定できるのは、サービスのみです。-
変更前:
email_prototype: @acme_demo.monolog.email_prototype
-
変更後:
email_prototype: acme_demo.monolog.email_prototype
もしくは、次のようにしてプロトタイプ用のファクトリを使うこともできます:
email_prototype: id: acme_demo.monolog.email_prototype method: getPrototype
-
-
-
セキュリティを考慮し、プロキシ由来の HTTP ヘッダー (
HTTP_X_FORWARDED_FOR、X_FORWARDED_PROTO、X_FORWARDED_HOST等) は、デフォルトでは信頼されなくなりました。リバースプロキシ経由でアプリケーションを利用する構成の場合は、次のように設定してください:framework: trust_proxy_headers: true -
意図しない名前の衝突を避けるため、AbstractType によるフォームタイプ名の自動定義は行われなくなりました。カスタムタイプを作成する場合は、明示的に
getName()メソッドを実装する必要があります。
-
Annotation クラスには、@Annotation を付加してください。 (例については Validator コンポーネントの制約クラスを参照してください)
-
アノテーションのオートロードには、PHP の機構ではなく独自の機構が使われるように変更されました。 これにより、失敗の状態についてより制御できるようになりました。 コードを動作させるようにするには、
autoload.phpファイルの末尾に次のコードを追加してください:use Doctrine\Common\Annotations\AnnotationRegistry; AnnotationRegistry::registerLoader(function($class) use ($loader) { $loader->loadClass($class); return class_exists($class, false); }); AnnotationRegistry::registerFile( __DIR__.'/../vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php' );$loader変数はUniversalClassLoaderのインスタンスです。 また、ORM のパスをDoctrineAnnotations.phpに変更しなければいけない場合もあります。UniversalClassLoaderを使っていない場合、アノテーションの登録の詳細については、Doctrine アノテーションドキュメント を参照してください。
-
Symfony\Bundle\FrameworkBundle\Command\Commandクラスの名前がSymfony\Bundle\FrameworkBundle\Command\ContainerAwareCommandに変更されました。 -
ルーティングの
AnnotGlobLoaderクラスが削除されました。 -
Twig フォームテンプレートのいくつかのブロックの名前は、衝突を避けるために変更されました。
container_attributesからwidget_container_attributesattributesからwidget_attributesoptionsからwidget_choice_options
-
イベントの変更:
-
すべてのリスナーには、
kernel.listenerタグではなくkernel.event_listenerタグを設定する必要があります。 -
カーネルイベントのプレフィックスが
coreからkernelに変更されました:-
変更前:
<tag name="kernel.listener" event="core.request" method="onCoreRequest" /> -
変更後:
<tag name="kernel.event_listener" event="kernel.request" method="onKernelRequest" />
Note: メソッド名 method 属性で独立して指定できるので、
onCoreRequestのままでも動作しますが、将来的な一貫性のためにイベント名に合わせたメソッド名に変更しておく方がよいでしょう。 -
-
Symfony\Component\HttpKernel\CoreEventsクラスの名前がSymfony\Component\HttpKernel\KernelEventsに変更されました。
-
-
TrueValidatorとFalseValidatorの受け付ける値をより限定しました。
-
UserProviderInterface::loadUser()メソッドの名前は、メソッドの目的がより明確になるよう、UserProviderInterface::refreshUser()に変更されました。 -
WebTestCaseクラスの$kernelプロパティは static に変更されました。 ファンクショナルテスト内で$this->kernelを使っている箇所は、self::$kernelに変更してください。 -
AsseticBundle は独立したリポジトリで管理されるようになりました(Symfony2 Standard Edition にはバンドルされています)。
-
Yaml コンポーネントの変更:
- Exception クラスは独自の名前空間へ移動されました。
Yaml::load()メソッドの名前はYaml::parse()に変更されました。
-
HttpFoundationコンポーネントのFileクラスのリファクタリング:-
Symfony\Component\HttpFoundation\File\Fileの API が新しくなりました。-
\SplFileInfoを継承するようになりましたgetName()はgetBasename()に変更getDirectory()はgetPath()に変更getPath()はgetRealPath()に変更
-
move()メソッドを呼び出した時に、対象ディレクトリがまだ存在していない場合は作成されるようになりました。 -
getExtension()とguessExtension()の戻り値の拡張子から、先頭の.が除去されるように変更されました。
-
-
Symfony\Component\HttpFoundation\File\UploadedFileの API が新しくなりました。-
コンストラクタに真偽値の引数が追加されました。 この引数に true を指定すると、ファイルを移動できるようになりますが、テストモード以外では true に設定しないでください。 コアファイル以外の外部から true に設定することは想定していません。
-
getMimeType()は、対象ファイルの MIME タイプを必ず返すように変更されました。 リクエストから MIME タイプを取得する場合は、getClientMimeType()メソッドを使ってください。 -
getSize()は、対象ファイルのサイズを必ず返すように変更されました。 リクエストからファイルサイズを取得する場合は、getClientSize()メソッドを使ってください。 -
リクエストからオリジナルのファイル名を取得する場合は、
getClientOriginalName()メソッドを使ってください。
-
-
-
Twig の
extensions設定は削除されました。 Twig エクステンションを登録する場合は、twig.extensionタグを使ってください。 -
Monolog ハンドラのスタックで、デフォルトで記録が伝播されるようになりました。 伝播されないようにするには、bubble を明示的に false に設定してください。
-
SerializerInterfaceが拡張されました。 Serializer クラスのパブリックメソッドの数は減りましたが、後方互換性が損なわれ、コンポーネント独自の Exception クラスが追加されました。 -
FileTypeフォームクラスが大きく変更されました。-
テンポラリストレージが削除されました。
-
FileType の
typeオプションが削除されました。 新しい動作は、以前のtypeにfileを設定した場合の動作と同じです。 -
ファイルウィジェットは、他の INPUT フィールドと同じようにレンダリングされるように変更されました。
-
-
Doctrine の
EntityTypeクラスコンストラクタのem引数には、EntityManager インスタンスの代わりにエンティティマネージャー名を指定するよう変更されました。 このオプションをを渡さない場合、以前と同じようにデフォルトのエンティティマネージャーが使われます。 -
Console コンポーネントの中の
Command::getFullname()メソッドとCommand::getNamespace()メソッドは削除されました (Command::getName()メソッドの振る舞いは以前のCommand::getFullname()メソッドと同じになりました)。 -
デフォルトの Twig フォームテンプレートは Twig bridge に移動されました。以下のようにすればテンプレートや コンフィギュレーション設定中で現在Twig フォームテンプレートを参照できます:
変更前:
TwigBundle:Form:div_layout.html.twig変更後:
form_div_layout.html.twig -
キャッシュウォーマーに関連する設定は、すべて削除されました。
-
Response::isRedirected()メソッドはResponse::isRedirect()メソッドに統合されました。
-
Profileのインスタンスを返すClient::getProfile()メソッドへの変更に従い、Client::getProfiler()メソッドは削除されました。 -
いくつかの
UniversalClassLoaderのメソッド名は変更されました:registerPrefixFallbackからregisterPrefixFallbacksregisterNamespaceFallbackからregisterNamespaceFallbacks
-
イベントシステムはさらに柔軟になりました。リスナーは任意の有効でコール可能な PHP 関数であれば可能になりました。
-
EventDispatcher::addListener($eventName, $listener, $priority = 0):$eventNameがイベント名で (もう配列ではいけません)、$listenerが コール可能な PHP 関数です。
-
イベントクラス名と定数が変更されました:
-
以前の
Symfony\Component\Form\Eventsのクラス名と定数:Events::preBind = 'preBind' Events::postBind = 'postBind' Events::preSetData = 'preSetData' Events::postSetData = 'postSetData' Events::onBindClientData = 'onBindClientData' Events::onBindNormData = 'onBindNormData' Events::onSetData = 'onSetData' -
新しい
Symfony\Component\Form\FormEventsクラス名と定数:FormEvents::PRE_BIND = 'form.pre_bind' FormEvents::POST_BIND = 'form.post_bind' FormEvents::PRE_SET_DATA = 'form.pre_set_data' FormEvents::POST_SET_DATA = 'form.post_set_data' FormEvents::BIND_CLIENT_DATA = 'form.bind_client_data' FormEvents::BIND_NORM_DATA = 'form.bind_norm_data' FormEvents::SET_DATA = 'form.set_data' -
以前の
Symfony\Component\HttpKernel\Eventsのクラス名と定数:Events::onCoreRequest = 'onCoreRequest' Events::onCoreException = 'onCoreException' Events::onCoreView = 'onCoreView' Events::onCoreController = 'onCoreController' Events::onCoreResponse = 'onCoreResponse' -
新しい
Symfony\Component\HttpKernel\CoreEventsのクラス名と定数:CoreEvents::REQUEST = 'core.request' CoreEvents::EXCEPTION = 'core.exception' CoreEvents::VIEW = 'core.view' CoreEvents::CONTROLLER = 'core.controller' CoreEvents::RESPONSE = 'core.response' -
以前の
Symfony\Component\Security\Http\Eventsのクラス名と定数:Events::onSecurityInteractiveLogin = 'onSecurityInteractiveLogin' Events::onSecuritySwitchUser = 'onSecuritySwitchUser' -
新しい
Symfony\Component\Security\Http\SecurityEventsのクラス名と定数:SecurityEvents::INTERACTIVE_LOGIN = 'security.interactive_login' SecurityEvents::SWITCH_USER = 'security.switch_user'
-
-
addListenerServiceは第 1 引数として単一のイベント名だけを取るようになりました。 -
コンフィギュレーションのタグでは、呼び出すメソッドを指定する必要があります。
-
変更前:
<tag name="kernel.listener" event="onCoreRequest" /> -
変更後:
<tag name="kernel.listener" event="core.request" method="onCoreRequest" />
-
-
Subscriber は常に連想配列を返すようになりました:
-
変更前:
public static function getSubscribedEvents() { return Events::onBindNormData; } -
変更後:
public static function getSubscribedEvents() { return array(FormEvents::BIND_NORM_DATA => 'onBindNormData'); }
-
-
-
フォーム
DateTypeパラメーターのsingle-textはsingle_textへ変更されました -
フォームフィールドラベルヘルパーは属性の設定も受け入れるようになりました。例 :
{{ form_label(form.name, 'Custom label', { 'attr': {'class': 'name_field'} }) }}- Swiftmailer を使うためには、autoloader ("app/autoloader.php") を通して "init.php" を登録し、
Swift_prefix の登録を autoloader から削除しなければなりません。これをどのように行うべきかの例は、 Standard Distribution をご覧ください。 autoload.php.
-
framework.annotationsに属する設定が少し変更されました。変更前:
framework: annotations: cache: file file_cache: debug: true dir: /foo変更後:
framework: annotations: cache: file debug: true file_cache_dir: /foo
-
アノテーションのパース処理が変更され、Doctrine Common 3.0 を利用するようになりました。 クラス内で使うアノテーションは、インポートする必要があります(
useで PHP の名前空間をインポートするのと同様です)。変更前:
<?php
/**
* @orm:Entity
*/
class AcmeUser
{
/**
* @orm:Id
* @orm:GeneratedValue(strategy = "AUTO")
* @orm:Column(type="integer")
* @var integer
*/
private $id;
/**
* @orm:Column(type="string", nullable=false)
* @assert:NotBlank
* @var string
*/
private $name;
}変更後:
<?php
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
*/
class AcmeUser
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*
* @var integer
*/
private $id;
/**
* @ORM\Column(type="string", nullable=false)
* @Assert\NotBlank
*
* @var string
*/
private $name;
}Set制約の記述が変更され、必要なくなったため削除されました。
変更前:
<?php
/**
* @orm:Entity
*/
class AcmeEntity
{
/**
* @assert:Set({@assert:Callback(...), @assert:Callback(...)})
*/
private $foo;
}変更後:
<?php
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints\Callback;
/**
* @ORM\Entity
*/
class AcmeEntity
{
/**
* @Callback(...)
* @Callback(...)
*/
private $foo;
}-
framework.validation.annotationsに属するコンフィギュレーションは削除され、framework.validation.enable_annotationsの真偽値に置き換えられました(デフォルトではfalseです)。 -
フォームを使う場合は、明示的に有効化するよう変更されました(Symfony Standard Edition のコンフィギュレーションではデフォルトで有効に設定されています)。
framework: form: ~これは、次のように記述しても同じです。
framework: form: enabled: true -
Routing コンポーネントの例外を移動しました。
変更前:
Symfony\Component\Routing\Matcher\Exception\Exception Symfony\Component\Routing\Matcher\Exception\NotFoundException Symfony\Component\Routing\Matcher\Exception\MethodNotAllowedException変更後:
Symfony\Component\Routing\Exception\Exception Symfony\Component\Routing\Exception\NotFoundException Symfony\Component\Routing\Exception\MethodNotAllowedException -
Form コンポーネントの
csrf_page_idオプションの名前は、intentionに変更されました。 -
error_handlerの設定が削除されました。ErrorHandlerクラスは Symfony Standard Edition のAppKernelで直接管理されるように変更されました。 -
Doctrine のメタデータ用のディレクトリが、
Resources/config/doctrine/metadata/orm/からResources/config/doctrineに変更され、各ファイルの拡張子が.dcm.ymlから.orm.ymlに変更されました。 また、ファイル名は短いクラス名のみに変更されました。変更前:
Resources/config/doctrine/metadata/orm/Bundle.Entity.dcm.xml Resources/config/doctrine/metadata/orm/Bundle.Entity.dcm.yml変更後:
Resources/config/doctrine/Entity.orm.xml Resources/config/doctrine/Entity.orm.yml -
新しい Doctrine Registry クラスの導入により、次のパラメータは削除されました(
doctrineサービスのメソッドに置き換えられました)。doctrine.orm.entity_managersdoctrine.orm.default_entity_managerdoctrine.dbal.default_connection
変更前:
$container->getParameter('doctrine.orm.entity_managers') $container->getParameter('doctrine.orm.default_entity_manager') $container->getParameter('doctrine.orm.default_connection')変更後:
$container->get('doctrine')->getEntityManagerNames() $container->get('doctrine')->getDefaultEntityManagerName() $container->get('doctrine')->getDefaultConnectionName()ただし、これらのメソッドを使わなくても、次のようにして Registry オブジェクトから直接 EntityManager オブジェクトを取得できます。
変更前:
$em = $this->get('doctrine.orm.entity_manager'); $em = $this->get('doctrine.orm.foobar_entity_manager');変更後:
$em = $this->get('doctrine')->getEntityManager(); $em = $this->get('doctrine')->getEntityManager('foobar'); -
doctrine:generate:entitiesコマンドの引数とオプションが変更されました。 新しい引数とオプションの詳細は、./app/console doctrine:generate:entities --helpコマンドを実行して確認してください。 -
doctrine:generate:repositoriesコマンドは削除されました。 このコマンドに相当する機能は、doctrine:generate:entitiesコマンドに統合されました。 -
Doctrine イベントサブスクライバーは、ユニークな
doctrine.event_subscriberタグを使うように変更されました。 また、Doctrine イベントリスナーは、ユニークなdoctrine.event_listenerタグを使うように変更されました。 コネクションを指定するには、オプションのconnection属性を使ってください。変更前:
listener: class: MyEventListener tags: - { name: doctrine.common.event_listener, event: name } - { name: doctrine.dbal.default_event_listener, event: name } subscriber: class: MyEventSubscriber tags: - { name: doctrine.common.event_subscriber } - { name: doctrine.dbal.default_event_subscriber }変更後:
listener: class: MyEventListener tags: - { name: doctrine.event_listener, event: name } # すべてのコネクションに対して登録 - { name: doctrine.event_listener, event: name, connection: default } # デフォルトコネクションにのみ登録 subscriber: class: MyEventSubscriber tags: - { name: doctrine.event_subscriber } # すべてのコネクションに対して登録 - { name: doctrine.event_subscriber, connection: default } # デフォルトコネクションにのみ登録 -
アプリケーションの翻訳ファイルは、
Resourcesディレクトリに保存されるように変更されました。変更前:
app/translations/catalogue.fr.xml変更後:
app/Resources/translations/catalogue.fr.xml -
collectionフォームタイプのmodifiableオプションは、2 つのオプション "allow_add" と "allow_delete" に分割されました。変更前:
$builder->add('tags', 'collection', array( 'type' => 'text', 'modifiable' => true, ));変更後:
$builder->add('tags', 'collection', array( 'type' => 'text', 'allow_add' => true, 'allow_delete' => true, )); -
Request::hasSession()メソッドの名前はRequest::hasPreviousSession()に変更されました。hasSession()メソッドはまだ存在しますが、 セッションが以前のリクエストから開始されたかどうかではなく、リクエストがセッションオブジェクトを含んでいるかチェックするのみです。 -
Serializer: NormalizerInterface の
supports()メソッドはsupportsNormalization()とsupportsDenormalization()の 2 つのメソッドに分割されました。 -
ParameterBag::getDeep()メソッドは削除され、ParameterBag::get()メソッドの真偽値の引数に置き換えられました。 -
Serializer:
AbstractEncoderとAbstractNormalizerはそれぞれSerializerAwareEncoderとSerializerAwareNormalizerに名前が変更されました。 -
Serializer: すべてのインターフェイスから
$propertiesという引数が除かれました。 -
Form: オプションの値である "date" タイプの "widget" の "text" は "single-text" に名前が変更されました。 "text" は現在は個々のテキストボックスを示します ("time" タイプのように) 。
-
Form: ビュー変数
nameがfull_nameに変更されました。name変数には$form->getName()と同じ値である、ローカルの短い名前が格納されるようになりました。
-
CSRF シークレットの設定は、
secretという必須のグローバル設定に変更されました(また、このシークレット値は CSRF 以外でも利用されます)変更前:
framework: csrf_protection: secret: S3cr3t変更後:
framework: secret: S3cr3t -
File::getWebPath()メソッドとFile::rename()メソッドは削除されました。同様にframework.document_rootコンフィギュレーションも削除されました。 -
File::getDefaultExtension()メソッドの名前はFile::guessExtension()に変更されました。 また、拡張子を推測できなかった場合は null を返すように変更されました。 -
sessionのコンフィギュレーションがリファクタリングされました-
classオプションが削除されました(代わりにsession.classパラメータを使ってください) -
PDO セッションストレージのコンフィギュレーションが削除されました(クックブックのレシピは修正中です)
-
storage_idオプションには、サービスIDの一部ではなく、サービスIDそのものを指定するように変更されました。
-
-
DoctrineMigrationsBundleとDoctrineFixturesBundleの 2 つのバンドルは、Symfony コアから独立し、個別のリポジトリで管理されるようになりました。 -
フォームフレームワークの大きなリファクタリングが行われました(詳細はドキュメントを参照してください)
-
transタグで、翻訳するメッセージを引数として受け取る形式が廃止されました:{% trans "foo" %} {% trans foo %}次のような長い形式か、フィルタ形式を使ってください:
{% trans %}foo{% endtrans %} {{ foo|trans }}こうすることで、タグとフィルタの使用方法が明確になり、自動出力エスケープのルールが適用された場合により分かりやすくなります(詳細はドキュメントを参照してください)。
-
DependencyInjection コンポーネントの
ContainerBuilderクラスとDefinitionクラスのいくつかのメソッドの名前が、より分かりやすく一貫性のある名前に変更されました:変更前:
$container->remove('my_definition'); $definition->setArgument(0, 'foo');変更後:
$container->removeDefinition('my_definition'); $definition->replaceArgument(0, 'foo'); -
rememberme のコンフィギュレーションで、
token_provider keyサービスIDのサフィックスを指定するのではなく、サービスIDそのものを指定するように変更されました。
-
HttpFoundation\Cookie::getExpire() は getExpiresTime() に名前が変更されました。
-
XMLのコンフィギュレーションの記述方法が変更されました。属性が1つしかないタグは、すべてタグのコンテンツとして記述するように変更されました。
変更前:
<bundle name="MyBundle" /> <app:engine id="twig" /> <twig:extension id="twig.extension.debug" />変更後:
<bundle>MyBundle</bundle> <app:engine>twig</app:engine> <twig:extension>twig.extension.debug</twig:extension> -
SwitchUserListenerが有効な場合に、すべてのユーザーが任意のアカウントになりすませる致命的な脆弱性を修正しました。SwitchUserListenerを利用しない設定にしている場合は影響はありません。
-
DIコンテナのコンパイルプロセスの最後に、すべてのサービスに対する参照のバリデーションがより厳密に行われるようになりました。これにより、無効なサービス参照が見つかった場合は、コンパイル時の例外が発生します(以前の動作は、実行時例外でした)。
-
エクステンションのコンフィギュレーションクラスには、
Symfony\Component\Config\Definition\ConfigurationInterfaceインターフェイスを実装する必要があります。この部分の後方互換性は維持されていますが、今後の開発のために、エクステンションにこのインターフェイスを実装しておいてください。 -
Monologのオプション
fingerscrossedはfingers_crossedに名前が変更されました。
-
バンドルの論理名には、再び
Bundleサフィックスを付けるように修正されました:コントローラ:
Blog:Post:show->BlogBundle:Post:showテンプレート:
Blog:Post:show.html.twig->BlogBundle:Post:show.html.twigリソース:
@Blog/Resources/config/blog.xml->@BlogBundle/Resources/config/blog.xmlDoctrine:
$em->find('Blog:Post', $id)->$em->find('BlogBundle:Post', $id) -
ZendBundleはMonologBundleに置き換えられました。 これに関するプロジェクトのアップデート方法は、Symfony Standard Edition の変更点を参考にしてください: https://github.com/symfony/symfony-standard/pull/30/files -
コアバンドルのパラメータは、ほぼすべて削除されました。 代わりにバンドルのエクステンションの設定で公開されている設定を使うようにしてください。
-
一貫性のために、いくつかのコアバンドルのサービス名が変更されました。
-
バリデータの名前空間が
validationからassertへ変更されました(PR9向けにアナウンスされていましたが、PR10での変更となりました):変更前:
@validation:NotNull変更後:
@assert:NotNullさらに、いくつかの制約で使われていた
Assertプレフィックスは削除されました(AssertTrueからTrueへ変更) -
ApplicationTester::getDisplay()とCommandTester::getDisplay()メソッドは、コマンドの終了コードを返すようになりました
-
Symfony\Bundle\FrameworkBundle\Util\Filesystemは、Symfony\Component\HttpKernel\Util\Filesystemへ移動されました -
Execute制約は、Callback制約に名前が変更されました -
HTTPの例外クラスのシグニチャが変更されました:
変更前:
throw new NotFoundHttpException('Not Found', $message, 0, $e);変更後:
throw new NotFoundHttpException($message, $e); -
RequestMatcher クラスでは、正規表現に
^と$が自動的には追加されなくなりましたこの変更によって、セキュリティの設定をたとえば次のように変更する必要があります:
変更前:
pattern: /_profiler.* pattern: /login変更後:
pattern: ^/_profiler pattern: ^/login$ -
app/ディレクトリ以下のグローバルテンプレートの位置が変更されました(古いディレクトリでは動作しなくなります):変更前:
app/views/base.html.twig app/views/AcmeDemoBundle/base.html.twig変更後:
app/Resources/views/base.html.twig app/Resources/AcmeDemo/views/base.html.twig -
バンドルの論理名に、
Bundleサフィックスをつける必要がなくなりました:コントローラ:
BlogBundle:Post:show->Blog:Post:showテンプレート:
BlogBundle:Post:show.html.twig->Blog:Post:show.html.twigリソース:
@BlogBundle/Resources/config/blog.xml->@Blog/Resources/config/blog.xmlDoctrine:
$em->find('BlogBundle:Post', $id)->$em->find('Blog:Post', $id) -
Asseticのフィルターは明示的にロードする必要があります:
assetic: filters: cssrewrite: ~ yui_css: jar: "/path/to/yuicompressor.jar" my_filter: resource: "%kernel.root_dir%/config/my_filter.xml" foo: bar