Ответы пользователя по тегу Yii
  • PHP DBLIB + Multiple Result Sets (SQL Server)?

    @tnz
    Интересно пишете.
    FreeTDS разве не однопоточный? В смысле что он не может выполнять несколько запросов одновременно.
    С ним можно напрямую работать, минуя ODBC слой.
    Ответ написан
  • Блок условий в методе afterFind

    @tnz
    Что-то вы не то делаете, мне кажется. Если в каком-то случае не нужны данные из связанных таблиц — не выбирайте их. Не? А когда надо, вынесите в скоуп и в нужном контроллере перед выборкой подключайте скоуп этот.
    Ответ написан
  • Как вызвать контроллер из другого контроллера?

    @tnz
    Так тоже не получится.
    в forward() вызывается CWebApplication::runController($route) без обработки. А при изначальном вызове парсится урл из запроса, параметры заносятся в _REQUEST и все такое:
    $route=$this->getUrlManager()->parseUrl($this->getRequest());
    $this->runController($route);
    

    Так что надо сделать примерно вот так:
    $request = Yii:app()->getRequest();
    $request->pathInfo = $this->createUrl('/page/test', array('id'=>12));
    $route=$this->getUrlManager()->parseUrl($request);
    $this->runController($route);
    

    Но я совсем не уверен, что вам удастся таким образом установить pathInfo в реквесте, так что еще проще
    вручную записывать параметры в $_REQUEST[«id»]=$_GET["$id"]=12;

    Но выглядит это все добро совсем не кошерно. Мне кажется удобней будет переписать UrlManager на свой лад. Просто если у вас запросы все обрабатываются в одном контроллере, который неведомым образом знает куда какой форвардить, то лучше это добро переписать внутрь UrlManager-a. Да и через него урлы формируются для новых страниц (вы же их не жестко прописываете?). Однажды там описать правила или хранить их в базе или где там надо и все.

    Из описания проблемы не очень понятно… Если у вас есть несколько контроллеров Page, Product,… и есть урлы вида page1.html, product-cool.html соответственно, то и проблемы-то нет. Просто надо переписать правила роутинга для этих контроллеров. Вот для Page, например
    'page<id:\d+>'=>'page/index', //$id перейдет в indexAction($id)
    

    Для Product тож придумать можно
    'product-<name:\w+>'=>'product/index', //$name перейдет в indexAction($name)
    
    Ответ написан
    Комментировать