urlManager в yii - PullRequest
       2

urlManager в yii

0 голосов
/ 09 октября 2011
'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
               'ongSpcl/<category:.*?>'=>'ongSpcl/index',
            ),
        ),

Приведенный выше код читает URL "abc.co/ongSpcl/sp1" как "abc.co/ongSpcl?category=sp1. Это работает! Но моя проблема в том, что я хочу прочитать все URL в указанном выше формате.за исключением "abc.co/ongSpcl/index"

Ответы [ 2 ]

0 голосов
/ 21 октября 2011

Удаление трейлинга index из Yii Url, измените действие show category с ongSpcl#index на что-то другое, затем добавьте '/ongSpcl' => 'ongSpcl/index',

'urlManager'=>array(
  'urlFormat'=>'path',
  'rules'=>array(
    '/ongSpcl' => 'ongSpcl/index',
    '/ongSpcl/<category:.*?>'=>'ongSpcl/show',
  ),
),

Заглушка для тестирования маршрутов

class RoutingTest extends CTestCase {
  public function createUrl($route, $params=array()) {
    $url = explode('phpunit', Yii::app()->createUrl($route, $params));
    return $url[1];
  }

  public function testCorrectRoutes() {
    $this->assertEquals('/ongSpcl', $this->createUrl('ongSpcl/index'));
    $this->assertEquals('/ongSpcl/sp1', $this->createUrl('ongSpcl/show', array('category' => 'sp1'));
    //
  }
0 голосов
/ 09 октября 2011

Поместите правило для 'ongSpcl/index'=>ongSpcl/index (измените правую сторону на любой маршрут, который вы хотите) до вашего существующего правила.Yii выполнит первое найденное совпадение.

Кроме того, к вашему сведению, вы можете использовать <category:\w+> - сопоставлять любые ненулевые строки буквенно-цифровых символов , если вы намерены.

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