내가 무엇을 가지고 :
# index.php
$app = new Silex\Application();
... (loading routes file by YamlFileLoader) ...
$app['routes']->addCollection($loader->load('routes.yml'));
$app->run();
라우팅 :
# routes.yml
home:
pattern:/
defaults: { _controller: 'Controllers\DefaultController::indexAction' }
어떻게 컨트롤러 내부의 $ 응용 프로그램 인스턴스에 대한 액세스 권한을 얻을 수 있나요? 이 괜찮아요,
# controllers/DefaultController.php
class DefaultController
{
public function indexAction(Request $request, Application $app)
{
// this is the place!
return $app['twig']->render('index.twig');
}
}
좋아,하지만이 방법은 나를 위해 받아 들일 수없는 몇 가지 이유가있다 : 그것은 간단합니다.
# controllers/DefaultController.php
class DefaultController
{
public function indexAction()
{
return $this->twig->render('index.twig');
}
}
내가 부모 기본 클래스 사용하려면 다음 사항을 제공하기 위해 :
# controllers/BaseController.php
class BaseController
{
protected $twig;
public function __construct(Application $app)
{
$this->twig = $app['twig'];
}
}
을 그리고 당신은 예상대로 :
# controllers/DefaultController.php
class DefaultController extends BaseController
...
을 그리고 고전적인 방법을 사용하려면 그래서,베이스 컨트롤러에 silex $ app을 주입하는 것이 더 좋습니다.
컨트롤러를 서비스로 정의 할 수 있습니다. http://silex.sensiolabs.org/doc/providers/service_controller.html – igorw