Maison > cadre php > YII > Comment le framework Yii accède-t-il au contrôleur sous le module personnalisé ?

Comment le framework Yii accède-t-il au contrôleur sous le module personnalisé ?

王林
Libérer: 2020-02-26 14:42:27
original
2534 Les gens l'ont consulté

Comment le framework Yii accède-t-il au contrôleur sous le module personnalisé ?

Question :

Comment accéder aux actions dans le contrôleur de Site ? Comme le montre l'image :

Comment le framework Yii accède-t-il au contrôleur sous le module personnalisé ?

Solution :

1 Créez un répertoire

Créez d'abord la structure de répertoires comme ci-dessus, puis le. répertoire sous l'api Il y a trois dossiers et un fichier Module.php Le contenu de ce fichier php est le suivant :

<?php

namespace app\modules\api;

/**
 * api module definition class
 */
class Module extends \yii\base\Module
{
    /**
     * @inheritdoc
     */
    public $controllerNamespace = &#39;app\modules\api\controllers&#39;;

    /**
     * @inheritdoc
     */
    public function init()
    {
        parent::init();

        // custom initialization code goes here
    }
}
Copier après la connexion

(Tutoriel recommandé : yii framework)

<🎜. >2. web.php

N'oubliez pas qu'il existe un fichier web.php dans le dossier config du répertoire racine du projet :

<?php

$params = require __DIR__ . &#39;/params.php&#39;;
$db = require __DIR__ . &#39;/db.php&#39;;

$config = [
    &#39;id&#39; => &#39;basic&#39;,
    &#39;basePath&#39; => dirname(__DIR__),
    &#39;bootstrap&#39; => [&#39;log&#39;],
    &#39;aliases&#39; => [
        &#39;@bower&#39; => &#39;@vendor/bower-asset&#39;,
        &#39;@npm&#39;   => &#39;@vendor/npm-asset&#39;,
    ],
    &#39;components&#39; => [
        &#39;request&#39; => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            &#39;cookieValidationKey&#39; => &#39;jjsYJ_ju0W8ifOv5mY3JBMI6DOppFlo6&#39;,
        ],
        &#39;cache&#39; => [
            &#39;class&#39; => &#39;yii\caching\FileCache&#39;,
        ],
        &#39;user&#39; => [
            &#39;identityClass&#39; => &#39;app\models\User&#39;,
            &#39;enableAutoLogin&#39; => true,
        ],
        &#39;errorHandler&#39; => [
            &#39;errorAction&#39; => &#39;site/error&#39;,
        ],
        &#39;mailer&#39; => [
            &#39;class&#39; => &#39;yii\swiftmailer\Mailer&#39;,
            // send all mails to a file by default. You have to set
            // &#39;useFileTransport&#39; to false and configure a transport
            // for the mailer to send real emails.
            &#39;useFileTransport&#39; => true,
        ],
        &#39;log&#39; => [
            &#39;traceLevel&#39; => YII_DEBUG ? 3 : 0,
            &#39;targets&#39; => [
                [
                    &#39;class&#39; => &#39;yii\log\FileTarget&#39;,
                    &#39;levels&#39; => [&#39;error&#39;, &#39;warning&#39;],
                ],
            ],
        ],
        &#39;db&#39; => $db,
        /*
        &#39;urlManager&#39; => [
            &#39;enablePrettyUrl&#39; => true,
            &#39;showScriptName&#39; => false,
            &#39;rules&#39; => [
            ],
        ],
        */
    ],
    &#39;modules&#39; => [
        &#39;api&#39; => [
            &#39;class&#39; => &#39;app\modules\api\Module&#39;,
        ],
    ],
    &#39;params&#39; => $params,
];

if (YII_ENV_DEV) {
    // configuration adjustments for &#39;dev&#39; environment
    $config[&#39;bootstrap&#39;][] = &#39;debug&#39;;
    $config[&#39;modules&#39;][&#39;debug&#39;] = [
        &#39;class&#39; => &#39;yii\debug\Module&#39;,
        // uncomment the following to add your IP if you are not connecting from localhost.
        //&#39;allowedIPs&#39; => [&#39;127.0.0.1&#39;, &#39;::1&#39;],
    ];

    $config[&#39;bootstrap&#39;][] = &#39;gii&#39;;
    $config[&#39;modules&#39;][&#39;gii&#39;] = [
        &#39;class&#39; => &#39;yii\gii\Module&#39;,
        // uncomment the following to add your IP if you are not connecting from localhost.
        //&#39;allowedIPs&#39; => [&#39;127.0.0.1&#39;, &#39;::1&#39;],
    ];
}

return $config;
Copier après la connexion

3. composant api

Nous sommes maintenant dans Créer un nouveau SiteControllers.php sous Modules/api/controllers, avec le contenu suivant :

<?php

namespace app\modules\api\controllers;

use yii\web\Controller;


class SiteController extends Controller
{
    public function actionIndex()
    {
        echo "hello world";
    }
}
Copier après la connexion
Accès au navigateur

Enfin, le Le navigateur accède à cet actionIndex et le navigateur saisit : http://localhost/basic/web/index.php?r=api/site/index

Comment le framework Yii accède-t-il au contrôleur sous le module personnalisé ?

Terminé !

Pour plus de contenu lié à la programmation, veuillez faire attention à la colonne

Introduction à la programmation sur le site Web PHP chinois !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal