2016-02-20 3 views
0

Я использую ZF 2 Framework и имею следующий сценарий.ZF2 Регистрация пользователя и создание субдомена

  1. Компания может зарегистрировать
  2. После Регистр создает поддомен (нужно изменения в .htaccess)

Пример:

  • site.com => Frontend
  • company_a.site.com => Frontend for Company (company_id = 1)
  • compaby_b.site.com => Frontend для компании (company_id = 2)

Что я хочу, что когда пользователи идет к company_a.site.com или company_b.site.com, что маршрут то же самое в приложении, но данные из БД зависят от имени поддомена.

Как я думаю, что он должен работать:

  1. Пользователь приходит к company_a.site.com
  2. В главном контроллере я буду сделать запрос к БД, чтобы увидеть, если существует компанию с именем " company_a ", и если это так, то назначьте глобальную переменную с идентификатором компании из БД. Поэтому я могу основать на , что ID загружает содержимое для интерфейса.

ответ

0

я найти решение с типом ZF 2 Route Hostname

1

В моем текущем проекте я сделал что-то подобное. Я использовал сервис, чтобы получить детали сайта из базы данных MySQL, используя доктрину, основанную на доменном имени.

Моя служба

namespace Application\Service; 

use Zend\ServiceManager\FactoryInterface; 
use Zend\ServiceManager\ServiceLocatorInterface; 
use Application\Entity\Sites; 

class SiteFactory implements FactoryInterface 
{ 

    /** 
    * @var EntityManager 
    */ 
    protected $entityManager = NULL; 

    /** 
    * 
    * @param \Zend\ServiceManager\ServiceLocatorInterface $serviceLocator 
    * @return \Application\Entity\Sites 
    */ 
    public function createService(ServiceLocatorInterface $serviceLocator) 
    { 
     $request = $serviceLocator->get('Request'); 
     $site = new Sites(); 

     if (method_exists($request, 'getUri')) { 
      $domainName = ltrim($request->getUri()->getHost(), 'www.'); 
      $entityManager = $serviceLocator->get('entityManager'); 
      $repository = $entityManager->getRepository('Application\Entity\Sites'); 
      $site = $repository->findOneByDomainName($domainName); 
     } 

     return $site; 
    } 

} 

В моей module.config я имею

'service_manager' => array(
    'factories' => array(
     'site' => 'Application\Service\SiteFactory', 
    ), 
), 

и получить место в моем контроллере я использую

$this->getServiceLocator()->get('site'); 

вернуть доктрину сайтов объект или пустой объект, если сайт не найден.

Надеюсь, это указывает на то, что вы в правильном направлении.

+0

Спасибо за гуманный, но проблема для меня маршрутизация, как настроить маршрутизации для всех поддоменов. – IgorD

Смежные вопросы