Yii r1.8 Использование пользовательских классов правил URL - PullRequest
0 голосов
/ 31 июля 2011

Я пытаюсь воспользоваться Классами пользовательских URL-правил в Yii r1.8

Я пытаюсь взять что-то, похожее на orgs / view / id / 24, и вместо этого отобразить имя организации, идентифицированное по имени в БД (т.е. изменение www.mysite.com/orgs/view/id/24 на www.mysite.com/jaysshop динамически). К сожалению, я не заставляю его работать.

Вот мой код:

class OrgsUrlRule extends CBaseUrlRule
{
    public $connectionID = 'db';

    public function createUrl($manager,$route,$params,$ampersand)
    {
        if ($route==='orgs/view/id')  //even tried 'orgs/view' or 'orgs/index'
        {
            if (isset($params['Name']))
                return $params['Name'];
            else if (isset($params['Name']))
                return $params['Name'];
        }
        return false;  
    }

    public function parseUrl($manager,$request,$pathInfo,$rawPathInfo)
    {
        if (preg_match('%^(\w+)(/(\w+))?$%', $pathInfo, $matches))
        {
        }
        return false;  
    }
}

urlManager:

array(
  'class' => 'application.components.OrgsUrlRule',
  'connectionID' => 'db',
),

1 Ответ

2 голосов
/ 06 августа 2011

Я привожу вам этот пример в предположении, что вы хотите взять название магазина из URL, чтобы вызвать ваш контроллер / действие на нем

Например:

public function parseUrl($manager,$request,$pathInfo,$rawPathInfo)
{
   $aParts = explode('/', $pathInfo);
   if (count($aParts) == 1) // It's only 1 piece, so a possible "shop name"
   {
      if (isAValidNameForAShop($aParts[0]))
      {
         $_REQUEST['id'] = $aParts[0]; // Store it to retrieve it in the controller
         return 'orgs/view';
      }
   }
   return FALSE; // Seems like something else, we don't apply
 }

Надеюсь, это поможет вам немного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...