Symfony2Webサイトのバンドルページの一部をオーバーライドする方法をフォローしています。これは面白い:
app / config / config.ymlで設定することにより、サービスのクラス名を保持するパラメーターを独自のクラスに設定できます。もちろん、これは、クラス名がサービスを含むバンドルのサービス構成のパラメーターとして定義されている場合にのみ可能です。
それで私はそれがパラメータを定義していることを調べました、/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config
そしてそれでSymfonyクラスを次のようなもので拡張するのは簡単なはずです:session.xml
%session.class%
Session
namespace Acme\HelloBundle\Component\HttpFoundation;
use Symfony\Component\HttpFoundation\Session;
class ExtendedSession extends Session
{
public function setSuccessFlashText($text, array params = array())
{
parent::setFlash('success', $this->getTranslator()->trans($text, $params);
}
}
私はまだこれをテストしていません。しかし、どうすればrequest
特別なサービスで同じことができますか?コードを読みやすくするために、便利なショートカットをいくつか追加したいと思います。
私はこれをservices.xml
ファイルで見つけました:
<!--
If you want to change the Request class, modify the code in
your front controller (app.php) so that it passes an instance of
YourRequestClass to the Kernel.
This service definition only defines the scope of the request.
It is used to check references scope.
-->
<service id="request" scope="request" synthetic="true" />
これが私のapp.php
です。カスタムリクエストクラスのインスタンスを渡すにはどうすればよいですか?
require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';
//require_once __DIR__.'/../app/AppCache.php';
use Symfony\Component\HttpFoundation\Request;
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);
$kernel->handle(Request::createFromGlobals())->send();