2014-09-04 3 views
29

У меня есть UserControler, и я запускаю его на виртуальном сервере http://basic.com/index.php?r=user/index. Как я могу настроить UserController и действие index быть по умолчанию, когда я иду в http://basic.comКак установить контроллер по умолчанию в yii2

+0

Что вы пробовали? И вы сделали это в Google: http://www.larryullman.com/2013/02/18/understanding-routes-in-the-yii-framework/ –

ответ

10

Это может быть установлено в конфигурации, см Default Controller:

[ 
    'defaultRoute' => 'main', 
] 

Но обратите внимание, что это тесно связано с маршрутизацией, что гр полностью настраивается компонентом urlManager. Тогда, если вы хотите, скажем, domain/profile вести себя как domain/user/profile то эти правила urlManager может быть другой путь:

'rules' => array(
    '<action:\w+>' => 'user/<action>', // <-- use UserController by default 
    '<controller:\w+>/<id:\d+>' => '<controller>/view', 
    '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
), 

Надеюсь, это поможет кому-то :)

1

С yii2 я был в состоянии сделать это в urlmanager с:

'rules'=> [ 
     ['pattern'=>'<action>', 'route'=>'controller/<action>'], 
] 
0

Это не ответ вопрос, однако это может быть полезно знать: есть catchAll недвижимости в yii\web\Application, который определяется как:

Конфигурация задание действия контроллера, который должен обрабатывать все запросы пользователей.

Использование:

'catchAll' => ['controller/action'] 

Таким образом, каждый запрос http://basic.com будет вызывать controller/action

6

Как и несколько человек уже сказал, вам нужно добавить defaultRoute в файле конфигурации.
Вот как это должно выглядеть:

//config/web.php в основном шаблоне или backend/config/main.php в выдвинутого

$config = [ 
    ... 
    'components' => [ 
     ... 
    ], 
    'params' => $params, 
    'defaultRoute' => 'user/index', 
]; 
+0

Это правильный ответ. Работает как шарм. Спасибо! – MrD

1

Попробуйте другие решения ... Если они не работают, а затем использовать мой простой трюк ...

Просто создайте страницу index.php в корне.

Затем, в этом файле, записать этот код:

return header('Location: http://your page location'); 
1

Открыть web.php файл из папки конфигурации и добавьте следующее:

'defaultRoute' => 'admin'

к вашему $config массива.

enter image description here

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