0

Symfony2コントローラーにテスト親クラスを次のように設定しました。

<?php

namespace Zetcho\AmColAnBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class BaseController extends Controller
{
    public function validateUser()
    {
        $user['first_name'] = "Name";
        $user['signin'] = true;
        return $user;
    }
}
class DefaultController extends BaseController
{
    public function indexAction()
    {
        $user = $this->validateUser();
        $displayParms['user'] = $user;
        return $this->render('ZetchoAmColAnBundle:Default:index.html.twig',$displayParms);
    }
}

コードはsrc/Zetcho / AmColAnBundle / Controller/DefaultController.phpにあります。テストコードは機能します。ここで、親クラス(BaseController)をコントローラーファイルから独自のクラスに移動して、他のコントローラーで再利用できるようにします。他のコントローラーと同じディレクトリに配置したいので、上記のuseステートメントのコントローラーと同じ方法で宣言したいと思います。Symfony 2でこれを行うための最良の/受け入れられている方法は何ですか?

4

1 に答える 1

1

これは、他のPHPクラスの場合とまったく同じ方法でSymfony2で行います。次のように、クラスを個別のファイルに分割します。-

src / Zetcho / AmColAnBundle / Controller / BaseController.php

namespace Zetcho\AmColAnBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class BaseController extends Controller
{
    public function validateUser()
    {
        $user['first_name'] = "Name";
        $user['signin'] = true;
        return $user;
    }
}

src / Zetcho / AmColAnBundle / Controller / DefaultController.php

namespace Zetcho\AmColAnBundle\Controller;

use Zetcho\AmColAnBundle\Controller\BaseController;

class DefaultController extends BaseController
{
    public function indexAction()
    {
        $user = $this->validateUser();
        $displayParms['user'] = $user;
        return $this->render('ZetchoAmColAnBundle:Default:index.html.twig',$displayParms);
    }
}

方法がわかれば、とても簡単です。symfony2のコントローラーは単なる通常のPHPクラスであり、特別なことは何もないことを忘れないでください。

于 2013-03-26T19:42:41.453 に答える