yii框架如何访问自定义模块下的controller

yii框架如何访问自定义模块下的controller

问题:

Site控制器里面的action如何访问?如图:

yii框架如何访问自定义模块下的controller

解决方法:

1、建立目录

首先建立如上的目录结构,在api下的以及目录有三个文件夹和一个文件Module.php,这个php文件内容如下:

<?php namespace appmodulesapi;  /**  * api module definition class  */ class Module extends YIIbaseModule {     /**      * @inheritdoc      */     public $controllerNamespace = &#39;appmodulesapicontrollers&#39;;      /**      * @inheritdoc      */     public function init()     {         parent::init();          // custom initialization code goes here     } }

(推荐教程:yii框架

2、web.php

还记得项目根目录下的config文件夹下有个web.php文件么,添加如下字段:

<?php $params = require __DIR__ . &#39;/params.php&#39;; $db = require __DIR__ . &#39;/db.php&#39;;  $config = [     &#39;id&#39; => 'basic',     'basePath' =&gt; dirname(__DIR__),     'bootstrap' =&gt; ['log'],     'aliases' =&gt; [         '@bower' =&gt; '@vendor/bower-asset',         '@npm'   =&gt; '@vendor/npm-asset',     ],     'components' =&gt; [         'request' =&gt; [             // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation             'cookieValidationKey' =&gt; 'jjsYJ_ju0W8ifOv5mY3JBMI6DOppFlo6',         ],         'cache' =&gt; [             'class' =&gt; 'yiicachingFileCache',         ],         'user' =&gt; [             'identityClass' =&gt; 'appmodelsUser',             'enableAutoLogin' =&gt; true,         ],         'errorHandler' =&gt; [             'errorAction' =&gt; 'site/error',         ],         'mailer' =&gt; [             'class' =&gt; 'yiiswiftmailerMailer',             // send all mails to a file by default. You have to set             // 'useFileTransport' to false and configure a transport             // for the mailer to send real emails.             'useFileTransport' =&gt; true,         ],         'log' =&gt; [             'traceLevel' =&gt; YII_DEBUG ? 3 : 0,             'targets' =&gt; [                 [                     'class' =&gt; 'yiilogFileTarget',                     'levels' =&gt; ['error', 'warning'],                 ],             ],         ],         'db' =&gt; $db,         /*         'urlManager' =&gt; [             'enablePrettyUrl' =&gt; true,             'showScriptName' =&gt; false,             'rules' =&gt; [             ],         ],         */     ],     'modules' =&gt; [         'api' =&gt; [             'class' =&gt; 'appmodulesapiModule',         ],     ],     'params' =&gt; $params, ];  if (YII_ENV_DEV) {     // configuration adjustments for 'dev' environment     $config['bootstrap'][] = 'debug';     $config['modules']['debug'] = [         'class' =&gt; 'yiidebugModule',         // uncomment the following to add your IP if you are not connecting from localhost.         //'allowedIPs' =&gt; ['127.0.0.1', '::1'],     ];      $config['bootstrap'][] = 'gii';     $config['modules']['gii'] = [         'class' =&gt; 'yiigiiModule',         // uncomment the following to add your IP if you are not connecting from localhost.         //'allowedIPs' =&gt; ['127.0.0.1', '::1'],     ]; }  return $config;

3、api组件下的controllers

现在我们在Modules/api/controllers下新建一个SiteControllers.php,内容如下:

<?php namespace appmodulesapicontrollers;  use yiiwebController;   class SiteController extends Controller {     public function actionIndex()     {         echo "hello world";     } }

4、浏览器访问

最后就是浏览器访问这个actionIndex了,浏览器输入: http://localhost/basic/web/index.php?r=api/site/index

yii框架如何访问自定义模块下的controller

完成!

更多编程相关内容,请关注php中文网yii框架栏目!

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享