응용 프로그램은 내가 할 거라고하는 방법, 정말 다른 위치하는 경우 :
구조 :
// src/:
Sybio\Bundle\CoreBundle // Shared entities, config and tools
Sybio\Bundle\PortalBundle // Your main portal, domain.com
Sybio\Bundle\Ps3Bundle // Ps3 bundle
Sybio\Bundle\XboxBundle // Xbox bundle
// etc ...
아마도 더 나은 것,는 "콘솔"저장소 내에서 모든 콘솔 번들을 추가
Sybio\Bundle\CoreBundle // Shared entities, config and tools
Sybio\Bundle\PortalBundle // Your main portal, domain.com
Sybio\Bundle\Console\Ps3Bundle // Ps3 bundle
Sybio\Bundle\Console\XboxBundle // Xbox bundle
// etc ...
CoreBundle은 다른 번들 사이에서 엔티티를 공유하는 데 사용되지만 모든 번들에 포함되는 특정 템플릿 부분을 포함하는 번들이 아닙니다.
web/app.php // Your main site
web/app_ps3.php // Ps3 app
web/app_xbox.php // Xbox app
// etc...
이 app_ps3.php 내부를 볼 콘솔의 이름으로 AppKernel 생성자의 첫 번째 PARAM을 대체 :
// ...
$kernel = new AppKernel('ps3', false);
// ...
당신이 할 수있는
당신이 콘솔 당 하나의 웹 컨트롤러를 생성 한 후 원하는 경우 dev_version에서 각 컨트롤러를 복제하십시오. 예를 들어 app_dev.php ...
이제 프레임 워크는 사용 된 webcontrol에 따라 다른 환경을로드합니다 아르 자형.
예를 들어 도메인 "ps3.domain.com"은 web/app_ps3.php를 사용합니다 (마지막에는이를 수행하는 방법을 보여줍니다).
프레임 워크는 응용 프로그램/AppKernel.php에서 응용 프로그램의 설정을로드합니다 : 방문자가 웹/app_ps3.php 충돌하는 경우
는
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
}
, 프레임 워크는 고전 config_dev 대신 config_ps3.yml로드됩니다. PHP 또는 config_prod.php. 이제 여러분은 번들 의존성을 가지고 놀 것입니다!
각 콘솔마다 "app/config_myconsole.php"와 "app/routing_myconsole.yml"을 만듭니다.
config_ps3에 있습니다.사용자가 웹을 치면/app_ps3.yml을
// config_ps3.yml
// ...
framework:
router:
resource: "%kernel.root_dir%/config/routing_ps3.yml"
다시 시작하려면 : PS3의 라우팅 파일에 대한 라우팅 포함을 오버라이드 (override)이 선 후
// config_ps3.yml
imports:
- { resource: config.yml }
: YML (다른 콘솔), 당신의 일반 설정을로드 config_ps3.yml 파일이로드 된 다음 일반 config.yml 파일 다음에 routing_ps3.yml (routing.yml을 대체)이로드됩니다.
당신은 또한 당신이 많은 번들이있는 경우 각각의 설정 파일에 대해,이 부하를 경감 할 수 원하는 번들의 설정을 가져올 수 있습니다
: 또한
// config_ps3.yml
imports:
- { resource: config.yml }
- { resource: "@SybioCoreBundle/Resources/config/services.yml" }
- { resource: @SybioPs3Bundle/Resources/config/services.yml }
사용 된 각 콘솔 응용 프로그램은 자신의 경로 및 일부 CoreBundle에있는 공유 경로 및 작업.
각 응용 프로그램에 대한
, 당신은 콘솔 노선과 corebundle 경로 routing_ps3.yml의 여기 예를로드해야합니다
// routing_ps3.yml:
SybioCoreBundle:
resource: "@SybioCoreBundle/Controller/"
type: annotation
prefix: /
SybioPs3Bundle:
resource: "@SybioPs3Bundle/Controller/"
type: annotation
prefix: /
사용자는 Ps3Bundle 및 CoreBundle에서 웹/app_ps3.yml, 경로를 칠 경우 로드 중입니다 ... 사용자가 http://ps3.domain.com/ 일 경우 il은 Ps3Bundle에서 경로 "/"를 치고로드하지 않으므로 다른 콘솔 또는 포털 번들에서 "/"경로를 찾지 않습니다!
모든 응용 프로그램간에 공유되는 "/ stats /"와 같은 일반적인 페이지가있는 경우 CoreBundle에서이 경로를 작성하면 각 번들에 코드를 복제 할 필요가 없습니다. Ps3Bundle과 함께 CoreBundle 경로를 포함 시켰기 때문에 프레임 워크는 두 번들 모두에서 경로를 검색합니다.
이 경로는 여기에 액세스 할 수 있습니다 : ps3.domain.com/stats/, xbox.domain.com/stats/...
이을 완료하려면, 당신이해야 할 마지막 일은 사용하는 것입니다 하위 도메인에 따라 권리 webcontroller, 여기에 처리하는 방법 :
// web/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
# Hit ps3 app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} !^ps3\.domain.com$ [NC]
RewriteRule ^(.*)$ app_ps3.php [QSA,L]
# Hit xbox app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} !^xbox\.domain.com$ [NC]
RewriteRule ^(.*)$ app_xbox.php [QSA,L]
# Hit your main portal
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} !^www\.domain.com$ [NC]
RewriteRule ^(.*)$ app.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
내가 가상 호스트 정말 편안 아니지만, 일반적으로 작동!
다른 구성으로 동일한 코어에 구축 된 다른 응용 프로그램을로드하는 방법을 알고 있습니다.
건배.
다른 사이트에서이 방법을 사용 했으므로 기본 사이트에 다른 앱을 만들면 안됩니까? –
OMG, 네 말이 맞아, 내 질문에 거의 당혹스러워. – Ikzer