2013-06-28 3 views
0

Можно ли иметь такой массив:Yii; чтение из таблицы MySQL

'urlManager' => array(
     'urlFormat' => 'path', 
     'showScriptName' => false, 
     'urlFormat' => 'path', 
     'rules' => array(
      '<controller:\w+>/<id:\d+>' => '<controller>/view', 
      '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
      '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 

      '/admin' => '/admin/home', 
      '/admin/<controller:\w+>' => '/admin/<controller>', 
      '/admin/<controller:\w+>/<action:\w+>/<id:\d+>' => '/admin/<controller>/<action>', 
      '/admin/<controller:\w+>/<action:\w+>' => '/admin/<controller>/<action>', 
     ), 
    ), 

считываться из таблицы базы данных?

Почему: Делаю CMS, в которой я хочу, чтобы определить пользовательские категории, страницы и сообщения базы, так что я не использую базовый контроллер.

Пример: Мой контроллер страниц PagesController и я могу создать правило в менеджере URL вроде этого:

/pages/some-page-alias 

Я хочу, чтобы иметь возможность изменить /pages/, /categories/ и /posts/ к чему-то локализованным, то есть, чтобы быть в состоянии изменить его на боснийском языке:

/kategorije/ => /categories/, 
/stranice/ => /pages/, 
/clanci/ => /posts/, 

Есть ли решение для этого, как это можно сделать?

Btw, я не пробовал ничего, потому что я понятия не имею ...

+0

Можете ли вы привести пример «определить пользовательские категории, страницы и базу сообщений, чтобы я не использовал базовый контроллер»? – Pitchinnate

+0

Пожалуйста, позвольте мне изменить содержание вопроса. –

+0

@ Pitchinnate Edited. См. Вопрос сейчас. –

ответ

1

Вы можете просто сделать это:

'urlManager' => array(
     'urlFormat' => 'path', 
     'showScriptName' => false, 
     'urlFormat' => 'path', 
     'rules' => array(
      'kategorije/<id:\d+>' => 'category/view', 
      'kategorije/<action:\w+>/<id:\d+>' => 'category/<action>', 
      'kategorije/<action:\w+>' => 'category/<action>', 

      '<controller:\w+>/<id:\d+>' => '<controller>/view', 
      '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
      '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 

      '/admin' => '/admin/home', 
      '/admin/<controller:\w+>' => '/admin/<controller>', 
      '/admin/<controller:\w+>/<action:\w+>/<id:\d+>' => '/admin/<controller>/<action>', 
      '/admin/<controller:\w+>/<action:\w+>' => '/admin/<controller>/<action>', 
     ), 
    ), 

URLManager тем, что приоритеты в списке первым. Поэтому, если вы добавили пользовательское правило выше стандартных правил, оно сначала запустит эти правила. Когда он находит правило, которое его применяет, он выходит из строя.

+0

нет, вы не понимаете. Я не хочу, чтобы мои клиенты редактировали config.php для этого. Мне нужно это в веб-форме :) –

+0

О, хорошо я понимаю – Pitchinnate

+0

Будет ли каждая отдельная установка? Или одна система с несколькими клиентами? – Pitchinnate

0

Что касается меня, ваш вопрос непонятен.

Если вы хотите сохранить массив в БД, вы можете сделать это до serialize 'до этого.

Если вы хотите использовать несколько имен, указывающих на одном контроллере вы можете использовать такое правило:

array(
    '<_c:(stranica|page)>/<id:\d+>'=>'myController/view', 
) 

В этом случае, если какой-либо из URLs

http://example.com/stranica/123 
http://example.com/page/123 

испрашивается, он будет указывать на

http://example.com/myController/view?_c=stranica&id=123 
http://example.com/myController/view?_c=page&id=123 

Соответственно. См. CUrlManager примеры в API.