婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Yii2使用駝峰命名的形式訪問控制器(實例講解)

Yii2使用駝峰命名的形式訪問控制器(實例講解)

熱門標簽:百度地圖標注類型是酒店 商丘外呼系統好處 周口網絡回撥外呼系統 外呼系統人工客服 400電話申請辦理 隨州銷售電銷機器人公司 全國各省地圖標注點 福建高頻外呼防封系統哪家好 網絡電話400申請

yii2在使用的時候,訪問控制器的時候,如果控制器的名稱是駝峰命名法,那訪問的url中要改成橫線的形式。例如:

public function actionRoomUpdate()
{
//
}
//訪問的時候就要www.test.com/room-update這樣訪問

最近在做某渠道的直連的時候,他們提供的文檔上明確指出接口的形式:

剛開始以為YII2中肯定有這樣的設置,然后就去google了下,發現都說不行,自己去看了下,果然,框架里面直接是寫死的:(源碼)\vendor\yiisoft\yii2\base\Controller.php

/**
  * Creates an action based on the given action ID.
  * The method first checks if the action ID has been declared in [[actions()]]. If so,
  * it will use the configuration declared there to create the action object.
  * If not, it will look for a controller method whose name is in the format of `actionXyz`
  * where `Xyz` stands for the action ID. If found, an [[InlineAction]] representing that
  * method will be created and returned.
  * @param string $id the action ID.
  * @return Action the newly created action instance. Null if the ID doesn't resolve into any action.
  */
 public function createAction($id)
 {
  if ($id === '') {
   $id = $this->defaultAction;
  }

  $actionMap = $this->actions();
  if (isset($actionMap[$id])) {
   return Yii::createObject($actionMap[$id], [$id, $this]);
  } elseif (preg_match('/^[a-z0-9\\-_]+$/', $id)  strpos($id, '--') === false  trim($id, '-') === $id) {
   $methodName = 'action' . str_replace(' ', '', ucwords(implode(' ', explode('-', $id))));
   if (method_exists($this, $methodName)) {
    $method = new \ReflectionMethod($this, $methodName);
    if ($method->isPublic()  $method->getName() === $methodName) {
     return new InlineAction($id, $this, $methodName);
    }
   }
  }

  return null;
 }

這點有點low,不過問題倒不大,這個代碼很容易理解,我們發現,其實如果在這個源碼的基礎上再加上一個else就可以搞定,但是還是不建議直接改源碼。

由于我們的項目用的事yii2的advanced版本,并且里面有多個項目,還要保證其他項目使用正常(也就是個別的控制器才需要使用駝峰命名的方式訪問),這也容易:

我們可以寫個components處理:\common\components\zController.php

?php
/**
 * Created by PhpStorm.
 * User: Steven
 * Date: 2017/10/26
 * Time: 16:50
 */
namespace common\components;
use \yii\base\Controller;
use yii\base\InlineAction;

class zController extends Controller //這里需要繼承自\yii\base\Controller
{
 /**
  * Author:Steven
  * Desc:重寫路由,處理訪問控制器支持駝峰命名法
  * @param string $id
  * @return null|object|InlineAction
  */
 public function createAction($id)
 {
  if ($id === '') {
   $id = $this->defaultAction;
  }

  $actionMap = $this->actions();
  if (isset($actionMap[$id])) {
   return \Yii::createObject($actionMap[$id], [$id, $this]);
  } elseif (preg_match('/^[a-z0-9\\-_]+$/', $id)  strpos($id, '--') === false  trim($id, '-') === $id) {
   $methodName = 'action' . str_replace(' ', '', ucwords(implode(' ', explode('-', $id))));
   if (method_exists($this, $methodName)) {
    $method = new \ReflectionMethod($this, $methodName);
    if ($method->isPublic()  $method->getName() === $methodName) {
     return new InlineAction($id, $this, $methodName);
    }
   }
  } else {
   $methodName = 'action' . $id;
   if (method_exists($this, $methodName)) {
    $method = new \ReflectionMethod($this, $methodName);
    if ($method->isPublic()  $method->getName() === $methodName) {
     return new InlineAction($id, $this, $methodName);
    }
   }
  }

  return null;
 }
}

ok ,這就可以支持使用駝峰形式訪問了,當然這個的形式很多,也可以寫成一個控制器,然后其它控制器繼承這個控制器就行了,但是原理是一樣的

如果使用? 是需要用駝峰命名形式訪問的控制器中,繼承下這個zController就可以了,

?php
/**
 * Created by PhpStorm.
 * User: Steven
 * Date: 2017/10/18
 * Time: 15:57
 */
namespace backend\modules\hotel\controllers;
use yii\filters\AccessControl;
use yii\filters\ContentNegotiator;
use yii\web\Response;
use common\components\zController;

class QunarController extends zController
{
 public $enableCsrfValidation = false;


 public function behaviors()
 {
  $behaviors = parent::behaviors();
  unset($behaviors['authenticator']);
  $behaviors['corsFilter'] = [
   'class' => \yii\filters\Cors::className(),
   'cors' => [ // restrict access to
    'Access-Control-Request-Method' => ['*'], // Allow only POST and PUT methods
    'Access-Control-Request-Headers' => ['*'], // Allow only headers 'X-Wsse'
    'Access-Control-Allow-Credentials' => true, // Allow OPTIONS caching
    'Access-Control-Max-Age' => 3600, // Allow the X-Pagination-Current-Page header to be exposed to the browser.
    'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'],
   ],
  ];
  //配置ContentNegotiator支持JSON和XML響應格式
  /*$behaviors['contentNegotiator'] = [
   'class' => ContentNegotiator::className(), 'formats' => [
    'application/xml' => Response::FORMAT_XML
   ]
  ];*/
  $behaviors['access'] = [
   'class' => AccessControl::className(),
   'rules' => [
    [
     'ips' => ['119.254.26.*', //去哪兒IP訪問白名單
      '127.0.0.1','106.14.56.77','180.168.4.58' //蜘蛛及本地IP訪問白名單
     ], 'allow' => true,
    ],
   ],
  ];
  return $behaviors;
 }

}

?>

示例:

/**
  * Author:Steven
  * Desc:酒店靜態數據接口
  */
 public function actiongetFullHotelInfo()
 {

 }

訪問的時候url為www.test.com/getFullHotelInfo

以上這篇Yii2使用駝峰命名的形式訪問控制器(實例講解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 詳解PHP的Yii框架中的Controller控制器
  • Yii2創建控制器(createController)方法詳解
  • yii2控制器Controller Ajax操作示例
  • Yii2使用$this->context獲取當前的Module、Controller(控制器)、Action等
  • Yii2設置默認控制器的兩種方法
  • Yii控制器中操作視圖js的方法
  • Yii控制器中filter過濾器用法分析
  • Yii2框架控制器、路由、Url生成操作示例
  • Yii2使用駝峰命名的形式訪問控制器的示例代碼
  • yii2 在控制器中驗證請求參數的使用方法
  • Yii 框架控制器創建使用及控制器響應操作示例

標簽:十堰 佛山 海南 樂山 迪慶 六安 南寧 定西

巨人網絡通訊聲明:本文標題《Yii2使用駝峰命名的形式訪問控制器(實例講解)》,本文關鍵詞  Yii2,使用,駝峰,命名,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Yii2使用駝峰命名的形式訪問控制器(實例講解)》相關的同類信息!
  • 本頁收集關于Yii2使用駝峰命名的形式訪問控制器(實例講解)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    成人午夜私人影院| 亚洲欧美日韩在线| 欧美xxxxxxxx| 肉肉av福利一精品导航| 欧美色涩在线第一页| 亚洲综合一区二区精品导航| 在线视频国内自拍亚洲视频| 一区二区三区四区精品在线视频| 色网站国产精品| 一区二区三区四区国产精品| 欧美日韩一区二区不卡| 三级在线观看一区二区| 欧美岛国在线观看| 北条麻妃一区二区三区| 亚洲精品成人a在线观看| 91精品国产一区二区人妖| 国产乱色国产精品免费视频| 国产精品视频看| 91成人看片片| 免费观看日韩av| 中文字幕亚洲一区二区av在线| 一本色道久久综合精品竹菊| 日韩经典中文字幕一区| 久久这里只有精品首页| 成人午夜免费视频| 亚洲成人久久影院| 国产偷国产偷精品高清尤物| 色婷婷国产精品综合在线观看| 日韩高清电影一区| 国产精品成人免费在线| 91精品国产综合久久久久久漫画| 国产成人午夜电影网| 五月激情综合色| 自拍偷拍亚洲激情| 亚洲精品一线二线三线| 欧美丝袜自拍制服另类| 国产成人免费视频精品含羞草妖精| 亚洲精选免费视频| 国产欧美一区二区精品仙草咪| 欧美日韩国产美女| 色综合一个色综合| 成人深夜福利app| 激情深爱一区二区| 亚洲成人自拍网| 亚洲欧美日韩国产综合| 日韩欧美综合一区| 欧美日韩精品一区二区三区蜜桃 | 成人国产精品免费观看视频| 五月天中文字幕一区二区| 综合中文字幕亚洲| 中文字幕欧美日本乱码一线二线| 日韩一区二区影院| 欧美日韩在线不卡| 91在线观看高清| 成人免费视频免费观看| 国产精品白丝av| 国产一区二区三区日韩| 美女视频黄 久久| 亚洲国产欧美日韩另类综合| 亚洲欧美欧美一区二区三区| 欧美国产1区2区| 国产精品拍天天在线| 欧美国产国产综合| 国产精品国产三级国产普通话蜜臀 | av福利精品导航| 成人午夜av电影| 丁香网亚洲国际| 国产成人无遮挡在线视频| 国产精品99久| 成人一区在线看| 一本一道久久a久久精品综合蜜臀| 国产91清纯白嫩初高中在线观看| 国产在线精品免费| 成人av电影免费在线播放| 精品一区二区久久| 精品一区二区三区av| 国产精品自拍网站| 高清成人免费视频| 国产成人一级电影| 成人av在线看| 在线精品视频免费播放| 成人深夜福利app| 91黄色免费看| 欧美在线观看一区| 欧美日韩性生活| 欧美一区二区女人| 国产午夜精品理论片a级大结局| 亚洲欧美综合另类在线卡通| 亚洲乱码国产乱码精品精小说| 中文字幕电影一区| 中文字幕av资源一区| 亚洲国产日产av| 日韩高清在线不卡| 成人午夜又粗又硬又大| 色女孩综合影院| 3d成人动漫网站| 久久综合九色综合欧美亚洲| 中文字幕佐山爱一区二区免费| 日韩国产精品久久| 成人ar影院免费观看视频| 欧美日韩免费观看一区三区| 久久综合99re88久久爱| 亚洲一区二区在线观看视频| 国产原创一区二区三区| 在线亚洲免费视频| wwwwww.欧美系列| 亚洲最新在线观看| 国产盗摄精品一区二区三区在线| 91蝌蚪porny成人天涯| 欧美第一区第二区| 最新不卡av在线| 国产精品亚洲一区二区三区妖精| 欧美日韩精品一区二区三区 | 日韩欧美电影在线| 国产视频一区在线观看| 中文字幕在线不卡一区| 精品影视av免费| 777奇米四色成人影色区| 亚洲欧美怡红院| 亚洲成av人片在线| 97精品国产露脸对白| 久久综合成人精品亚洲另类欧美| 夜夜揉揉日日人人青青一国产精品| 久久国产精品99久久人人澡| 欧美日本国产一区| 久久网这里都是精品| 欧美猛男gaygay网站| 精品少妇一区二区三区在线视频| 中文字幕成人在线观看| 亚洲自拍偷拍九九九| 国产精品综合网| 欧美成人一区二区三区 | 91香蕉视频黄| 日韩一级免费一区| 亚洲国产欧美一区二区三区丁香婷| 懂色av中文一区二区三区| 欧美成人r级一区二区三区| 亚洲一区欧美一区| 91黄色免费网站| 一区二区三区在线免费观看| 91免费国产视频网站| 国产精品电影院| 91美女片黄在线观看91美女| 国产精品三级在线观看| 成人av集中营| 亚洲婷婷综合色高清在线| 91日韩精品一区| 亚洲国产成人精品视频| 色94色欧美sute亚洲13| 亚洲免费在线视频| 欧美久久一区二区| 裸体健美xxxx欧美裸体表演| 日韩一区二区三区av| 久久超碰97中文字幕| 久久综合久久综合九色| 国产成人精品三级麻豆| 亚洲精品国产一区二区精华液| 欧美亚洲综合在线| 日本免费新一区视频| 久久香蕉国产线看观看99| heyzo一本久久综合| 午夜欧美视频在线观看| 精品国产凹凸成av人导航| 福利电影一区二区| 亚洲综合无码一区二区| 欧美大片日本大片免费观看| 成人手机电影网| 五月激情综合网| 国产精品久久久久天堂| 欧美日韩国产三级| 国产精品99久久久久久似苏梦涵| 亚洲欧美一区二区三区久本道91| 欧美剧情电影在线观看完整版免费励志电影 | 91精品国产综合久久久久久久久久| 国产尤物一区二区| 亚洲综合丝袜美腿| 国产日韩欧美制服另类| 日本精品免费观看高清观看| 久久成人免费日本黄色| 亚洲一区二区3| 中文字幕免费一区| 精品国产成人系列| 精品视频全国免费看| 丁香啪啪综合成人亚洲小说| 肉丝袜脚交视频一区二区| 国产精品久久久久久久久图文区| 欧美丝袜自拍制服另类| 粉嫩嫩av羞羞动漫久久久| 日本成人在线视频网站| 亚洲国产美女搞黄色| 国产精品视频九色porn| 2023国产精品| 26uuu亚洲综合色欧美| 欧美一区二区免费| 欧美高清一级片在线| 日本国产一区二区| 不卡高清视频专区| 国产精品综合久久| 国产精品资源网| 国产一区免费电影|