日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁(yè) > 編程 > PHP > 正文

對(duì)于PHP的Yii框架中的Controller控制器的解析

2020-03-22 20:33:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了PHP的html' target='_blank'>Yii框架中的Controller控制器,Yii作為MVC框架,其控制器部分的使用自然是重中之重,需要的朋友可以參考下

控制器是 MVC 模式中的一部分, 是繼承yii/base/Controller類的對(duì)象,負(fù)責(zé)處理請(qǐng)求和生成響應(yīng)。 具體來(lái)說(shuō),控制器從應(yīng)用主體接管控制后會(huì)分析請(qǐng)求數(shù)據(jù)并傳送到模型, 傳送模型結(jié)果到視圖,最后生成輸出響應(yīng)信息。

操作

控制器由 操作 組成,它是執(zhí)行終端用戶請(qǐng)求的最基礎(chǔ)的單元,一個(gè)控制器可有一個(gè)或多個(gè)操作。

如下示例顯示包含兩個(gè)操作view and create 的控制器post:

namespace app/controllers;use Yii;use app/models/Post;use yii/web/Controller;use yii/web/NotFoundHttpException;class PostController extends Controller public function actionView($id) $model = Post::findOne($id); if ($model === null) { throw new NotFoundHttpException; return $this- render( view , [ model = $model, public function actionCreate() $model = new Post; if ($model- load(Yii::$app- request- post()) $model- save()) { return $this- redirect([ view , id = $model- id]); } else { return $this- render( create , [ model = $model,}

在操作 view (定義為 actionView() 方法)中, 代碼首先根據(jù)請(qǐng)求模型ID加載 模型, 如果加載成功,會(huì)渲染名稱為view的視圖并顯示,否則會(huì)拋出一個(gè)異常。

在操作 create (定義為 actionCreate() 方法)中, 代碼相似. 先將請(qǐng)求數(shù)據(jù)填入模型, 然后保存模型,如果兩者都成功,會(huì)跳轉(zhuǎn)到ID為新創(chuàng)建的模型的view操作,否則顯示提供用戶輸入的create視圖。

路由

終端用戶通過(guò)所謂的路由尋找到操作,路由是包含以下部分的字符串

模型ID: 僅存在于控制器屬于非應(yīng)用的模塊;

控制器ID: 同應(yīng)用(或同模塊如果為模塊下的控制器)下唯一標(biāo)識(shí)控制器的字符串;

操作ID: 同控制器下唯一標(biāo)識(shí)操作的字符串。

路由使用如下格式:

ControllerID/ActionID
如果屬于模塊下的控制器,使用如下格式:

ModuleID/ControllerID/ActionID
如果用戶的請(qǐng)求地址為 http://hostname/index.php?r=site/index, 會(huì)執(zhí)行site 控制器的index 操作。

創(chuàng)建控制器

在yii/web/Application網(wǎng)頁(yè)應(yīng)用中,控制器應(yīng)繼承yii/web/Controller 或它的子類。 同理在yii/console/Application控制臺(tái)應(yīng)用中,控制器繼承yii/console/Controller 或它的子類。 如下代碼定義一個(gè) site 控制器:

namespace app/controllers;use yii/web/Controller;class SiteController extends Controller}

控制器ID

通常情況下,控制器用來(lái)處理請(qǐng)求有關(guān)的資源類型,因此控制器ID通常為和資源有關(guān)的名詞。 例如使用article作為處理文章的控制器ID。

控制器ID應(yīng)僅包含英文小寫(xiě)字母、數(shù)字、下劃線、中橫杠和正斜杠, 例如 article 和 post-comment 是真是的控制器ID,article?, PostComment, admin/post不是控制器ID。

控制器Id可包含子目錄前綴,例如 admin/article 代表 yii/base/Application::controllerNamespace控制器命名空間下 admin子目錄中 article 控制器。 子目錄前綴可為英文大小寫(xiě)字母、數(shù)字、下劃線、正斜杠,其中正斜杠用來(lái)區(qū)分多級(jí)子目錄(如panels/admin)。

控制器類命名

控制器ID遵循以下規(guī)則衍生控制器類名:

將用正斜杠區(qū)分的每個(gè)單詞第一個(gè)字母轉(zhuǎn)為大寫(xiě)。注意如果控制器ID包含正斜杠,只將最后的正斜杠后的部分第一個(gè)字母轉(zhuǎn)為大寫(xiě);
去掉中橫杠,將正斜杠替換為反斜杠;
增加Controller后綴;
在前面增加yii/base/Application::controllerNamespace控制器命名空間.
下面為一些示例,假設(shè)yii/base/Application::controllerNamespace控制器命名空間為 app/controllers:

article 對(duì)應(yīng) app/controllers/ArticleController;

post-comment 對(duì)應(yīng) app/controllers/PostCommentController;

admin/post-comment 對(duì)應(yīng) app/controllers/admin/PostCommentController;

adminPanels/post-comment 對(duì)應(yīng) app/controllers/adminPanels/PostCommentController.

控制器類必須能被 自動(dòng)加載,所以在上面的例子中, 控制器article 類應(yīng)在 別名 為@app/controllers/ArticleController.php的文件中定義, 控制器admin/post2-comment應(yīng)在@app/controllers/admin/Post2CommentController.php文件中。

補(bǔ)充: 最后一個(gè)示例 admin/post2-comment 表示你可以將控制器放在 yii/base/Application::controllerNamespace控制器命名空間下的子目錄中, 在你不想用 模塊 的情況下給控制器分類,這種方式很有用。
控制器部署

可通過(guò)配置 yii/base/Application::controllerMap 來(lái)強(qiáng)制上述的控制器ID和類名對(duì)應(yīng), 通常用在使用第三方不能掌控類名的控制器上。

配置 應(yīng)用配置 中的application configuration,如下所示:

[ controllerMap = [ // 用類名申明 account 控制器 account = app/controllers/UserController , // 用配置數(shù)組申明 article 控制器 article = [ class = app/controllers/PostController , enableCsrfValidation = false,]

默認(rèn)控制器

每個(gè)應(yīng)用有一個(gè)由yii/base/Application::defaultRoute屬性指定的默認(rèn)控制器; 當(dāng)請(qǐng)求沒(méi)有指定 路由,該屬性值作為路由使用。 對(duì)于yii/web/Application網(wǎng)頁(yè)應(yīng)用,它的值為 site , 對(duì)于 yii/console/Application控制臺(tái)應(yīng)用,它的值為 help, 所以URL為http://hostname/index.php 表示由 site 控制器來(lái)處理。

可以在 應(yīng)用配置 中修改默認(rèn)控制器,如下所示:

[ defaultRoute = main ,]

創(chuàng)建操作

創(chuàng)建操作可簡(jiǎn)單地在控制器類中定義所謂的 操作方法 來(lái)完成,操作方法必須是以action開(kāi)頭的公有方法。 操作方法的返回值會(huì)作為響應(yīng)數(shù)據(jù)發(fā)送給終端用戶,如下代碼定義了兩個(gè)操作 index 和 hello-world:

namespace app/controllers;use yii/web/Controller;class SiteController extends Controller public function actionIndex() return $this- render( index  public function actionHelloWorld() return Hello World }

操作ID

操作通常是用來(lái)執(zhí)行資源的特定操作,因此,操作ID通常為動(dòng)詞,如view, update等。

操作ID應(yīng)僅包含英文小寫(xiě)字母、數(shù)字、下劃線和中橫杠,操作ID中的中橫杠用來(lái)分隔單詞。 例如view, update2, comment-post是真實(shí)的操作ID,view?, Update不是操作ID.

可通過(guò)兩種方式創(chuàng)建操作ID,內(nèi)聯(lián)操作和獨(dú)立操作. An inline action is 內(nèi)聯(lián)操作在控制器類中定義為方法;獨(dú)立操作是繼承yii/base/Action或它的子類的類。 內(nèi)聯(lián)操作容易創(chuàng)建,在無(wú)需重用的情況下優(yōu)先使用; 獨(dú)立操作相反,主要用于多個(gè)控制器重用,或重構(gòu)為擴(kuò)展。

內(nèi)聯(lián)操作

內(nèi)聯(lián)操作指的是根據(jù)我們剛描述的操作方法。

操作方法的名字是根據(jù)操作ID遵循如下規(guī)則衍生:

將每個(gè)單詞的第一個(gè)字母轉(zhuǎn)為大寫(xiě);

去掉中橫杠;

增加action前綴.

例如index 轉(zhuǎn)成 actionIndex, hello-world 轉(zhuǎn)成 actionHelloWorld。

注意: 操作方法的名字大小寫(xiě)敏感,如果方法名稱為ActionIndex不會(huì)認(rèn)為是操作方法, 所以請(qǐng)求index操作會(huì)返回一個(gè)異常,也要注意操作方法必須是公有的,私有或者受保護(hù)的方法不能定義成內(nèi)聯(lián)操作。
因?yàn)槿菀讋?chuàng)建,內(nèi)聯(lián)操作是最常用的操作,但是如果你計(jì)劃在不同地方重用相同的操作, 或者你想重新分配一個(gè)操作,需要考慮定義它為獨(dú)立操作。

獨(dú)立操作

獨(dú)立操作通過(guò)繼承yii/base/Action或它的子類來(lái)定義。 例如Yii發(fā)布的yii/web/ViewAction和yii/web/ErrorAction都是獨(dú)立操作。

要使用獨(dú)立操作,需要通過(guò)控制器中覆蓋yii/base/Controller::actions()方法在action map中申明,如下例所示:

public function actions() return [ // 用類來(lái)申明 error 操作 error = yii/web/ErrorAction , // 用配置數(shù)組申明 view 操作 view = [ class = yii/web/ViewAction , viewPrefix = ,}

如上所示, actions() 方法返回鍵為操作ID、值為對(duì)應(yīng)操作類名或數(shù)組configurations 的數(shù)組。 和內(nèi)聯(lián)操作不同,獨(dú)立操作ID可包含任意字符,只要在actions() 方法中申明.

為創(chuàng)建一個(gè)獨(dú)立操作類,需要繼承yii/base/Action 或它的子類,并實(shí)現(xiàn)公有的名稱為run()的方法, run() 方法的角色和操作方法類似,例如:

 ?phpnamespace app/components;use yii/base/Action;class HelloWorldAction extends Action public function run() return Hello World }

操作結(jié)果

操作方法或獨(dú)立操作的run()方法的返回值非常重要,它表示對(duì)應(yīng)操作結(jié)果。

返回值可為 響應(yīng) 對(duì)象,作為響應(yīng)發(fā)送給終端用戶。

對(duì)于yii/web/Application網(wǎng)頁(yè)應(yīng)用,返回值可為任意數(shù)據(jù), 它賦值給yii/web/Response::data, 最終轉(zhuǎn)換為字符串來(lái)展示響應(yīng)內(nèi)容。
對(duì)于yii/console/Application控制臺(tái)應(yīng)用,返回值可為整數(shù), 表示命令行下執(zhí)行的 yii/console/Response::exitStatus 退出狀態(tài)。
在上面的例子中,操作結(jié)果都為字符串,作為響應(yīng)數(shù)據(jù)發(fā)送給終端用戶,下例顯示一個(gè)操作通過(guò) 返回響應(yīng)對(duì)象(因?yàn)閥ii/web/Controller::redirect()方法返回一個(gè)響應(yīng)對(duì)象)可將用戶瀏覽器跳轉(zhuǎn)到新的URL。

public function actionForward()

{ // 用戶瀏覽器跳轉(zhuǎn)到 http://example.com return $this- redirect( http://example.com }

操作參數(shù)

內(nèi)聯(lián)操作的操作方法和獨(dú)立操作的 run() 方法可以帶參數(shù),稱為操作參數(shù)。 參數(shù)值從請(qǐng)求中獲取,對(duì)于yii/web/Application網(wǎng)頁(yè)應(yīng)用, 每個(gè)操作參數(shù)的值從$_GET中獲得,參數(shù)名作為鍵; 對(duì)于yii/console/Application控制臺(tái)應(yīng)用, 操作參數(shù)對(duì)應(yīng)命令行參數(shù)。

如下例,操作view (內(nèi)聯(lián)操作) 申明了兩個(gè)參數(shù) $id 和 $version。

namespace app/controllers;use yii/web/Controller;class PostController extends Controller public function actionView($id, $version = null) // ...}

操作參數(shù)會(huì)被不同的參數(shù)填入,如下所示:

http://hostname/index.php?r=post/view id=123: $id 會(huì)填入 123 ,$version 仍為 null 空因?yàn)闆](méi)有version請(qǐng)求參數(shù);
http://hostname/index.php?r=post/view id=123 version=2: $id 和 $version 分別填入 123 和 2 `;
http://hostname/index.php?r=post/view: 會(huì)拋出yii/web/BadRequestHttpException 異常 因?yàn)檎?qǐng)求沒(méi)有提供參數(shù)給必須賦值參數(shù)$id;
http://hostname/index.php?r=post/view id[]=123: 會(huì)拋出yii/web/BadRequestHttpException 異常 因?yàn)?id 參數(shù)收到數(shù)字值 [ 123 ]而不是字符串.
如果想讓操作參數(shù)接收數(shù)組值,需要指定$id為array,如下所示:

public function actionView(array $id, $version = null) // ...}

現(xiàn)在如果請(qǐng)求為 http://hostname/index.php?r=post/view id[]=123, 參數(shù) $id 會(huì)使用數(shù)組值[ 123 ], 如果請(qǐng)求為http://hostname/index.php?r=post/view id=123, 參數(shù) $id 會(huì)獲取相同數(shù)組值,因?yàn)闊o(wú)類型的 123 會(huì)自動(dòng)轉(zhuǎn)成數(shù)組。

上述例子主要描述網(wǎng)頁(yè)應(yīng)用的操作參數(shù),對(duì)于控制臺(tái)應(yīng)用,更多詳情請(qǐng)參閱控制臺(tái)命令。

默認(rèn)操作

每個(gè)控制器都有一個(gè)由 yii/base/Controller::defaultAction 屬性指定的默認(rèn)操作, 當(dāng)路由 只包含控制器ID,會(huì)使用所請(qǐng)求的控制器的默認(rèn)操作。

默認(rèn)操作默認(rèn)為 index,如果想修改默認(rèn)操作,只需簡(jiǎn)單地在控制器類中覆蓋這個(gè)屬性,如下所示:

namespace app/controllers;use yii/web/Controller;class SiteController extends Controller public $defaultAction = home  public function actionHome() return $this- render( home }

控制器動(dòng)作參數(shù)綁定
從版本 1.1.4 開(kāi)始,Yii 提供了對(duì)自動(dòng)動(dòng)作參數(shù)綁定的支持。就是說(shuō),控制器動(dòng)作可以定義命名的參數(shù),參數(shù)的值將由 Yii 自動(dòng)從 $_GET 填充。

為了詳細(xì)說(shuō)明此功能,假設(shè)我們需要為 PostController 寫(xiě)一個(gè) create 動(dòng)作。此動(dòng)作需要兩個(gè)參數(shù):

category:一個(gè)整數(shù),代表帖子(post)要發(fā)表在的那個(gè)分類的ID。

language:一個(gè)字符串,代表帖子所使用的語(yǔ)言代碼。

從 $_GET 中提取參數(shù)時(shí),我們可以不再下面這種無(wú)聊的代碼了:

 class PostController extends CController public function actionCreate() if(isset($_GET[ category ])) $category=(int)$_GET[ category  else throw new CHttpException(404, invalid request  if(isset($_GET[ language ])) $language=$_GET[ language  else $language= en  // ... fun code starts here ... }

現(xiàn)在使用動(dòng)作參數(shù)功能,我們可以更輕松的完成任務(wù):

 class PostController extends CController public function actionCreate($category, $language= en ) $category = (int)$category; echo Category: .$category. /Language: .$language; // ... fun code starts here ... }

注意我們?cè)趧?dòng)作方法 actionCreate 中添加了兩個(gè)參數(shù)。這些參數(shù)的名字必須和我們想要從 $_GET 中提取的名字一致。當(dāng)用戶沒(méi)有在請(qǐng)求中指定 $language 參數(shù)時(shí),這個(gè)參數(shù)會(huì)使用默認(rèn)值 en 。由于 $category 沒(méi)有默認(rèn)值,如果用戶沒(méi)有在 $_GET 中提供 category 參數(shù),將會(huì)自動(dòng)拋出一個(gè) CHttpException (錯(cuò)誤代碼 400) 異常。

從版本1.1.5開(kāi)始,Yii已經(jīng)支持?jǐn)?shù)組的動(dòng)作參數(shù)。使用方法如下:

 class PostController extends CController public function actionCreate(array $categories) // Yii will make sure $categories be an array }

控制器生命周期

處理一個(gè)請(qǐng)求時(shí),應(yīng)用主體 會(huì)根據(jù)請(qǐng)求路由創(chuàng)建一個(gè)控制器,控制器經(jīng)過(guò)以下生命周期來(lái)完成請(qǐng)求:

在控制器創(chuàng)建和配置后,yii/base/Controller::init() 方法會(huì)被調(diào)用。

控制器根據(jù)請(qǐng)求操作ID創(chuàng)建一個(gè)操作對(duì)象:

如果操作ID沒(méi)有指定,會(huì)使用yii/base/Controller::defaultAction默認(rèn)操作ID;

如果在yii/base/Controller::actions()找到操作ID,會(huì)創(chuàng)建一個(gè)獨(dú)立操作;

如果操作ID對(duì)應(yīng)操作方法,會(huì)創(chuàng)建一個(gè)內(nèi)聯(lián)操作;

否則會(huì)拋出yii/base/InvalidRouteException異常。

控制器按順序調(diào)用應(yīng)用主體、模塊(如果控制器屬于模塊)、控制器的 beforeAction() 方法;

如果任意一個(gè)調(diào)用返回false,后面未調(diào)用的beforeAction()會(huì)跳過(guò)并且操作執(zhí)行會(huì)被取消; action execution will be cancelled.

默認(rèn)情況下每個(gè) beforeAction() 方法會(huì)觸發(fā)一個(gè) beforeAction 事件,在事件中你可以追加事件處理操作;

控制器執(zhí)行操作:

請(qǐng)求數(shù)據(jù)解析和填入到操作參數(shù);

控制器按順序調(diào)用控制器、模塊(如果控制器屬于模塊)、應(yīng)用主體的 afterAction() 方法;

默認(rèn)情況下每個(gè) afterAction() 方法會(huì)觸發(fā)一個(gè) afterAction 事件,在事件中你可以追加事件處理操作;

應(yīng)用主體獲取操作結(jié)果并賦值給響應(yīng).

最佳實(shí)踐

在設(shè)計(jì)良好的應(yīng)用中,控制器很精練,包含的操作代碼簡(jiǎn)短; 如果你的控制器很復(fù)雜,通常意味著需要重構(gòu),轉(zhuǎn)移一些代碼到其他類中。

歸納起來(lái),控制器:

可訪問(wèn)請(qǐng)求 數(shù)據(jù);

可根據(jù)請(qǐng)求數(shù)據(jù)調(diào)用 模型 的方法和其他服務(wù)組件;

可使用視圖構(gòu)造響應(yīng);

不應(yīng)處理應(yīng)被模型處理的請(qǐng)求數(shù)據(jù);

應(yīng)避免嵌入HTML或其他展示代碼,這些代碼最好在 視圖中處理.

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP !

相關(guān)推薦:

關(guān)于Yii的CDbCriteria查詢條件的用法

關(guān)于PHP自定義序列化接口Serializable的用法分析

關(guān)于Zend Framework動(dòng)作控制器的用法

以上就是對(duì)于PHP的Yii框架中的Controller控制器的解析的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
日韩视频一区在线观看| 91精品国产综合久久福利| 欧美日韩国产中文精品字幕自在自线| 91精品视频国产| 久久久91精品| 国产日韩精品电影| 日韩黄色在线播放| 欧洲精品二区| 亚洲图片小说综合| 第一页在线观看| 日本啊v在线| 中文精品视频| 韩国av一区二区| 国产日韩精品久久久| 国产视频一区三区| 欧美日韩国产亚洲一区| 91精品国产自产在线丝袜啪| 日韩你懂的电影在线观看| 日韩欧美一二三四区| 日韩专区视频网站| 欧美色欧美亚洲高清在线视频| 国产欧美日韩久久| 中文字幕 亚洲一区| 亚洲尤物av| 欧美日韩国产成人| 欧美日韩第一| 在线不卡日本| 亚洲成av人片一区二区密柚| 亚洲成人7777| 99精品在线播放| 日韩av二区| 欧美日韩在线第一页| 国产一区精品| 欧美日韩国产不卡在线看| 久久视频一区| 日韩在线 中文字幕| 日韩午夜一区| 欧美人妻一区二区三区| 久久久久黄色| 国产视频一二区| 欧美日韩综合在线免费观看| 日韩三级免费观看| 在线国产日本| 欧美日韩综合在线观看| 一区二区中文视频| 中文在线视频观看| 久久精品国产视频| 欧美日韩高清在线一区| 日韩av中文字幕一区| 精品亚洲永久免费| 国产欧美日韩不卡| 亚洲三级av| 国产乱码午夜在线视频| 中文字幕线观看| 色99中文字幕| 欧美日韩免费精品| 日韩一二三四区| 久久91精品国产91久久小草| 日韩午夜黄色| 深夜福利亚洲| 日韩网站中文字幕| 中文字幕乱码在线| 中文字幕日韩国产| av免费观看网站| 国产一级久久久| 欧美亚洲天堂网| 精品熟女一区二区三区| 精品不卡一区二区| 免费在线视频一级不卡| 精品日韩在线播放| 亚洲国产欧美91| 最近免费中文字幕在线第一页| 日韩视频专区| 午夜福利一区二区三区| 国产最新在线| 在线一区免费| 日韩国产一区久久| 99久久www免费| 国产一区激情在线| 午夜一区二区三区免费| 国产欧美日韩第一页| 日韩精品视频在线看| 国产美女主播视频一区| 亚洲a级在线播放观看| 国产一级片播放| 91久久中文| 亚洲a中文字幕| 免费视频最近日韩| 免费国产成人看片在线| 欧美亚洲专区| 欧美日韩亚洲一| 美国av一区二区| 91精品婷婷国产综合久久竹菊| 国产欧美日韩视频| 日韩www在线| 在线资源av| 欧美日韩综合色| 在线一区免费| 国产一卡2卡3卡免费网站| 亚洲欧美韩国综合色| 国产黄色一级片| 日韩在线中文字幕| 中文在线一区二区| 欧美片网站免费| 91亚洲国产高清| 欧美婷婷久久| 欧美日韩视频在线| 国产欧美亚洲一区| 国产一级片在线播放| 91久久精品在线| 国产午夜精品全部视频播放| 日韩欧美中文| 先锋男人资源站| 中文字幕 日韩 欧美| 国产高清在线一区| 中文字幕99| 狠狠色综合色区| 91精品国产99| 在线一区二区不卡| 精品一区二区在线观看视频| 色综合久久88色综合天天免费| 精品视频国产| 久久99久久久久| 亚洲大片免费看| 91精品国产全国免费观看 | 日韩欧中文字幕| 亚洲一区激情| 一区二区日韩av| 久久精品黄色片| 精品一性一色一乱农村| 日韩.com| 国产拍揄自揄精品视频麻豆| 欧美日韩国产不卡| 一区二区在线高清视频| www.eeuss影院| 国产色综合网| 日韩精品―中文字幕| 国产一级在线| 国产欧美日韩综合| 精品999视频| 91精品视频在线| 日韩欧美久久| 欧美成人二区| 欧美日韩国产页| 中文精品视频| 欧美日韩综合不卡| 日韩精品一级| 日韩中文字幕在线观看视频| 国产视频一区三区| 欧美 日韩 中文字幕| 国产成人精品999在线观看| 欧美亚洲另类制服自拍| 不卡在线一区二区| 黄色一区二区视频| 国产欧美日产一区| 亚洲视频电影在线| 在线日韩欧美| 99久久婷婷| 在线观看中文字幕一区| 日本视频久久久| 久久久综合精品| 日韩欧美一二三| 成人久久久久| 中文在线视频观看| 免费在线播放av| 91久久精品在线| 在线综合 亚洲 欧美中文字幕| 在线国产三级| 亚洲国产福利| 国产视频一区三区| 亚洲午夜91| 快she精品国产999| av三级在线播放| 国内激情久久| 日韩精品视频在线观看网址| 精品在线网站观看| 日韩不卡在线观看| 欧美日韩久久久| 最近中文字幕日韩精品| 中文字幕视频在线免费欧美日韩综合在线看| 尤物在线精品| 中文字幕国产亚洲| 91精品综合久久久久久| 日韩中文字幕在线视频观看| 日韩不卡在线播放| 在线中文字幕视频| 国内不卡的二区三区中文字幕| 91麻豆视频网站| 91蜜桃婷婷狠狠久久综合9色| 欧美日韩精品在线| 中文字幕狠狠干| 日韩综合精品| 欧美一卡2卡3卡4卡| 日韩在线视频观看| 欧美久久久精品| 中文在线视频观看| 尤物av一区二区| 日韩欧美视频一区二区三区四区| 欧美日韩在线国产| 精品国产网站在线观看| 国产高潮久久久| 日韩免费电影网站| 国产1区在线| 欧美日韩成人综合| 欧美日韩尤物久久| 国产精品一区二区三区免费观看| 在线观看免费国产成人软件| 久久久精品日韩欧美| 国产三级视频网站| 久久精品一二三| 婷婷中文字幕一区| 天天综合天天添夜夜添狠狠添| 日韩精品丝袜在线| 999精品在线| 黄色片免费在线| 一区二区在线高清视频| 一区二区在线视频播放| 视频一区二区国产| 日韩精品一级| 日韩三级精品电影久久久| 97最新国自产拍视频在线完整在线看| 国产午夜精品视频| 婷婷中文字幕综合| 精品无人国产偷自产在线| 精品一二三区视频| 日韩av二区| 日韩精品中文字幕第1页| 黄色国产在线| 最近中文字幕在线中文高清版| av中文在线播放| 91精品国产自产| 国产乱国产乱老熟300| 国产成人精品999| 欧美日韩不卡在线视频| 日韩在线视频观看| 精品国产乱码一区二区| 国产黄色在线| 久久精品女人| 久久精品在线免费观看| 欧美日韩精品在线播放| 91精品国产综合久久久久| 欧美久久久久久蜜桃| 国产一区深夜福利| 一级免费a一片| 国产一区久久久| www.久久草| 国产在线一在线二| 国精品产品一区| 国产日韩av高清| 日韩精品一级| 日本不卡免费高清视频| 亚洲欧美伊人| 欧美日韩成人一区二区| 国产裸体歌舞团一区二区| 亚洲第一精品在线| 偷窥国产亚洲免费视频| 久久 天天综合| 日韩一级在线免费观看| 国产一卡2卡3卡四卡网站| 国产99在线|亚洲| 中文字幕亚洲第一| 国产三级精品网站| 免费在线视频一级不卡| 日本精品在线播放| 久久精品日韩无码| 日韩午夜高潮| 国产 中文 字幕 日韩 在线| 日韩综合精品| 欧美中文字幕视频在线观看| 亚洲福利精品| 欧美日韩精品综合| 国产婷婷色一区二区三区| 国产小视频免费在线观看| 欧美日韩精品电影| 欧美天堂一区二区| 日韩欧美综合| 国产高清在线视频| www.三级.com| 免费在线视频一级不卡| 欧美日韩999| 午夜一区二区三区| 欧美日韩人人澡狠狠躁视频| 精品日韩在线观看| 日韩欧美高清在线| 天天综合天天| 一级网站免费观看| 国产成人精品综合网站| 久久99精品久久久久久青青日本 | 日韩午夜中文字幕| 国产黄在线观看| 日韩不卡高清视频| 免费在线视频一区二区| 国产福利第一页| 久久精品www| 韩日中文字幕第一页| 欧美 中文字幕| 婷婷久久综合网| 国产日产一区二区| 在线观看一区| 久久99精品国产| 日韩中文字幕在线视频观看| 亚洲综合在线中文字幕| 日韩三级视频在线播放| 国产天堂素人系列在线视频| www 日韩| 精品国产999| 日本亚洲欧美三级| 大香一本蕉伊线亚洲网| 亚洲中午字幕| 国产成人精品三级| 色屁屁一区二区| 国产黄在线观看免费观看不卡| 亚洲福利精品| 午夜视频在线观看一区| 中文字幕一区二区三区精品| 最新中文在线视频| 欧美日韩综合视频| 日韩在线不卡一区| 日韩精品在线看| 中文字幕在线欧美| 精品国产乱码久久久久久蜜臀| 中文字幕欧美日韩| 国产1区在线| 91精品国产综合久久香蕉最新版 | 国产欧美日韩综合| 国产一二三区精品视频| 亚洲第一福利视频在线| 欧美日韩在线精品成人综合网| 国产福利一区在线观看| 亚洲 欧美 中文字幕| 久久久综合精品| 日韩精品中文字幕第1页| 国产嫩草影院久久久久| 第一页在线观看| 国产日韩中文字幕| 欧美日韩国产页| 日韩精品视频中文在线观看| 日韩免费高清一区二区| 亚洲免费在线视频一区 二区| 91蜜桃在线视频| 中文字幕第一页在线播放| 中文字幕视频一区二区三区久| 亚洲永久字幕| 亚洲一级特黄| 91亚洲国产| 亚洲福利精品| 精品三级久久| 国产三级做爰在线观看| 日韩国产一区久久| 久久精品国产视频| 韩国v欧美v日本v亚洲| 成人h视频在线观看| 欧美激情一区二区在线| 在线视频国内一区二区| 日韩色在线观看| 国产欧美日韩中文久久| 午夜视频在线观看一区| 亚洲一区中文字幕在线观看| 日韩中文字幕精品视频| 日本熟女一区二区| 国产在线观看91| 欧美日韩国产亚洲一区| 中文字幕日韩视频| 国产亚洲人成a一在线v站| 欧美日韩国产大片| 日韩在线不卡一区| 黄色欧美日韩| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 日韩在线观看视频一区二区| 午夜国产福利一区二区| 国产无套粉嫩白浆在线2022年| 国产资源在线观看| 亚洲大胆人体av| 欧美三级日韩在线| 成片免费观看| 中文字幕欧美日韩精品| 一区二区视频在线| 国产日韩精品在线看| 高清在线一区| 日本精品福利视频| 日韩国产在线观看一区| 国产日韩精品视频| 国产丝袜一区二区| 中文在线视频观看| 中文字幕日韩视频| 成人久久在线| 91精品婷婷国产综合久久| 国内精品不卡| 91精品国产91久久| 中文字幕在线视频久| 日韩不卡一二区| 日韩精品在线观| 国产永久在线观看| 91极品视频在线观看| 国产美女主播视频一区| 91精品观看| www.91香蕉视频| 精品极品三级久久久久| 国产色在线 com| 中文字幕 亚洲一区|