web-dev-qa-db-fra.com

Comment définir le contrôleur par défaut dans yii2

J'ai UserControler et je l'exécute sur un serveur virtuel http://basic.com/index.php?r=user/index . Comment puis-je configurer UserController et l'action index pour être la valeur par défaut lorsque je vais sur http://basic.com

34
Jackson Tong

Avez-vous essayé dans votre configuration:

'defaultRoute' => 'user/index'

Contrôleur par défaut

55
Aivar

Comme peu de gens l'ont déjà dit, vous devez ajouter defaultRoute dans le fichier de configuration.
Voici à quoi cela devrait ressembler:

//config/web.php dans de base modèle ou backend/config/main.php in avancé

$config = [
    ...
    'components' => [
        ...
    ],
    'params' => $params,
    'defaultRoute' => 'user/index',
];
12
d.raev

Cela peut être défini dans la configuration, voir Contrôleur par défaut :

[
    'defaultRoute' => 'main',
]

Mais notez que cela est étroitement lié au routage, qui peut être complètement personnalisé par le composant urlManager. Alors si vous voulez, disons domain/profile se comporter comme domain/user/profile alors ces règles pour urlManager pourraient être une autre façon de procéder:

'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>',
),

J'espère que cela aidera quelqu'un :)

11
LihO

Ce n'est pas la réponse à la question , mais il pourrait être utile de savoir: il y a une propriété catchAll dans yii\web\Application qui est défini comme:

La configuration spécifiant une action de contrôleur qui doit gérer toutes les demandes des utilisateurs.

Usage:

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

Ainsi, chaque demande à http://basic.com appellera controller/action

1

Notez que defaultRoute est ignoré, lorsque strictParsing est défini sur activé dans la configuration urlManager. Reportez-vous au problème sur GitHub: https://github.com/yiisoft/yii2/issues/5892

La configuration suivante est recommandée comme mesure:

[
    ...
    'defaultRoute' => 'default/index',
    ...
    'urlManager' => [
        'enablePrettyUrl' => true,
        'enableStrictParsing' => true,
        ...
        'rules' => [
            ...
            '' => '',   // <- this line should be added
        ],
    ],
    ...
]
1
chintogtokh

Essayez les autres solutions ... Si elles ne fonctionnent pas, alors utilisez ma simple astuce ...

Créez simplement une page index.php à la racine.

Ensuite, dans ce fichier, écrivez ce code:

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

Ouvrez le web.php fichier à partir de votre dossier de configuration et ajoutez ce qui suit:

'defaultRoute' => 'admin'

à ton $config tableau.

enter image description here

1
xdev