亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(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)僅包含英文小寫字母、數(shù)字、下劃線、中橫杠和正斜杠, 例如 article 和 post-comment 是真是的控制器ID,article?, PostComment, admin/post不是控制器ID。

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

控制器類命名

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

將用正斜杠區(qū)分的每個(gè)單詞第一個(gè)字母轉(zhuǎn)為大寫。注意如果控制器ID包含正斜杠,只將最后的正斜杠后的部分第一個(gè)字母轉(zhuǎn)為大寫;
去掉中橫杠,將正斜杠替換為反斜杠;
增加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)僅包含英文小寫字母、數(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)為大寫;

去掉中橫杠;

增加action前綴.

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

注意: 操作方法的名字大小寫敏感,如果方法名稱為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 寫一個(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ā)表
久久久久久久久久久久久久免费看| 亚洲综合成人在线视频| 亚洲最大激情中文字幕| 一区二区三区免费视频播放器| 57pao国产成永久免费视频| 亚洲xxx在线| 欧美亚洲禁片免费| caoporm在线视频| 欧美电影《轻佻寡妇》| 天堂8在线天堂资源bt| 四虎影视亚洲| 亚洲成人福利在线观看| 少妇一级淫免费观看| 久久99精品久久久久久| 欧美寡妇偷汉性猛交| 新67194成人永久网站| 任你操视频在线观看| 日韩一级片大全| 国产精品igao视频网网址不卡日韩| 国产校园另类小说区| 成人亲热视频网站| 一区国产精品| 亚洲国产成人久久综合| 欧美二区三区91| 无码h肉动漫在线观看| 成人黄色片免费| 6699久久国产精品免费| 91亚洲精品久久久蜜桃网站| 亚洲av无码乱码在线观看性色| 亚洲自拍三区| 国产女人爽到高潮a毛片| 欧美一区二区三区思思人| 色综合视频一区中文字幕| 自拍电影在线观看| 久久久久xxxx| 日韩人妻无码精品综合区| 一本一本久久a久久精品综合小说| 欧美影院在线播放| 欧美国产视频一区二区| 日韩理论片中文av| 影音先锋中文在线观看| 欧美另类极品videosbest视| 精品人伦一区二区色婷婷| 亚洲一区二区三区四区五区| 日韩午夜视频在线| 66国产精品| 少妇人妻丰满做爰xxx| 成人性生交大片免费看午夜| 丰满大乳国产精品| 日韩中文字幕二区| 日韩中文在线视频| 一日本道久久久精品国产| 阿v视频在线| aa成人免费视频| 国产精选一区| www.嫩草免费在线观看| 麻豆一区产品精品蜜桃的特点| 亚洲一区二区在线免费观看视频| 91麻豆精品激情在线观看最新| 自拍偷拍色综合| 亚洲综合久久av一区二区三区| 国模一区二区三区私拍视频| 青青青手机在线视频| 日本在线不卡视频一二三区| 中文字幕av久久爽| 亚洲精品日韩久久久| 国产一区在线观看免费| 波多野结衣电影免费观看| 九九久久精品视频| 亚洲一区二区蜜桃| 中日韩一区二区三区| 日韩精品一区二区三区av| 亚洲欧美国产毛片在线| 浅井舞香一区二区| 亚洲涩涩av| 米奇精品一区二区三区在线观看| 在线观看你懂的视频| 久久99精品国产99久久6尤物| 欧美精品一区二区三区视频| 久久久久九九精品影院| 久久久久在线观看| 久久机这里只有精品| 精品国产免费一区二区三区香蕉| 亚洲欧美日本视频在线观看| 小草av在线播放| 91在线免费看网站| 国产亚洲1区2区3区| 成人性做爰片免费视频| 97热在线精品视频在线观看| 91网站在线播放| 你懂的国产精品永久在线| 日韩免费在线播放| 强开小嫩苞一区二区三区网站| 91精品专区| 天天操夜夜添| 亚洲国产私拍精品国模在线观看| 亚洲国产成人在线观看| 亚洲欧美激情另类校园| 国产精品自拍视频一区| 国产一卡二卡在线播放| 一级毛片在线视频| 国产精品每日更新在线播放网址| 欧美色图在线视频| 欧美另类久久久品| 国产一区观看| 四虎影在永久在线观看| 国产精品久久三| 国产精品专区第二| 欧美人体大胆444www| 欧美极品少妇xxxxⅹ裸体艺术| 色综合久久天天综线观看| 国精品无码一区二区三区| 99亚洲一区二区| 杨钰莹一级淫片aaaaaa播放| 可以在线看的av网站| 亚洲欧洲成人自拍| 香蕉网站在线观看| 国产精品videosex性欧美| 欧美xxxx三人交性视频| 色欲无码人妻久久精品| 色综合久久天天综线观看| siro系绝美精品系列| 日韩欧美中文一区二区| 欧美电影免费观看高清完整| 在线视频国内一区二区| 有没有片在线看www| 全网免费在线播放视频入口| 国产亚洲高清在线观看| 精品一区二区三区在线成人| 午夜一区二区三区免费| 国产精品国产三级国产aⅴ原创| 欧美激情欧美激情在线五月| 麻豆视频在线观看免费网站黄| 国产精品国产一区二区| 免费成人高清在线视频theav| 国产精品一区三区| 免费看一级大片| 91在线直播亚洲| 精品动漫一区二区三区| 91久久精品无码一区二区| 久热视线观看免费视频| 69堂免费精品视频在线播放| 欧美成人高清手机在线视频| 久久日韩视频| 国产农村老头老太视频| 欧美日韩激情小视频| 久久婷婷国产麻豆91| 日本在线看片免费人成视1000| 亚洲最大色综合成人av| 欧美2区3区4区| 中国丰满人妻videoshd| 国产乱妇无码大片在线观看| 国产高清自产拍av在线| 美女主播视频一区| 成人综合社区| 国产精品日日摸夜夜摸av| 欧美中文字幕一区| 国产偷国产偷亚洲高清97cao| 欧美.日韩.国产.一区.二区| 欧美日韩aaaaaa| 欧美精品性视频| 欧美一级特黄aaa| 国产精品一区二区在线| 91成人免费在线视频| 色婷婷综合五月| 国产精品1024久久| 一级日本黄色片| 性久久久久久久| 久久久久亚洲av成人毛片韩| 99久久婷婷国产综合精品青牛牛| 国产九色在线播放九色| 啊啊啊射了视频网站| 青青a在线精品免费观看| 免费观看亚洲视频| 国产成人精品自拍| 波多野结衣家庭教师在线播放| 精品少妇一区二区三区视频免付费| 国产欧美va欧美va香蕉在| 国产一级中文字幕| 久久国产乱子伦免费精品| 97伦伦午夜电影理伦片| 午夜激情一区二区| 免费色片视频| 911精品国产一区二区在线| 亚洲精品在线观看免费| 久久中文精品视频| 欧美日韩国产综合久久| 97国产精品| 国产精品久久夜| 天天综合网久久| 精品综合免费视频观看| 色综合影院在线观看| 9765激情中文在线| 啊v视频在线一区二区三区| 日韩av在线播放网址| 亚洲理论在线观看| 欧美丰满老妇厨房牲生活| 国产乱码精品一区二区三| eeuss性xxxxxx电影| 国产精品入口免费麻豆| 日本高清一区二区视频| 一区二区三区不卡在线| 欧美午夜宅男影院| 日韩欧美激情四射| 亚洲午夜国产成人av电影男同| 国产经典自拍视频在线观看| 国产视频1区| 国产亚洲成人av| 免费av成人在线| 黄网免费入口| 欧美一级片免费在线观看| 亚洲欧洲在线一区| 99精品免费视频| 粉嫩小泬无遮挡久久久久久| 国产欧美久久久久久| 久久众筹精品私拍模特| 久久久久久久久久综合| 久久精品国产欧美亚洲人人爽| 奇米精品一区二区三区四区| 国产成人手机在线| 国产在线精品国自产拍免费| 日韩电影免费网址| 日韩免费观看高清完整版在线观看| 国产精品中文字幕久久久| 精品少妇久久久久久888优播| 日本丰满少妇黄大片在线观看| 国产激情久久久| 青青视频在线免费观看| 日韩在线免费观看视频| www.久久久久久久久久| 天天色棕合合合合合合合| 一区二区三区短视频| 亚洲成人精品视频在线观看| 欧美国产第一页| 一道在线中文一区二区三区| 久久久久久免费毛片精品| 最新国产成人av网站网址麻豆| 91精品黄色片免费大全| 成年人在线观看网站| 女人18毛片九区毛片在线| av片在线观看网站| 逼特逼视频在线观看| 日韩最新av在线| 91久久精品美女高潮| 东京干手机福利视频| 国产精品一区二区av白丝下载| 男女猛烈无遮挡午夜视频| 91精品国产高久久久久久五月天| 污视频网站在线免费| 不卡电影一区二区三区| 国产寡妇亲子伦一区二区| 欧美国产第二页| 97国产精品人人爽人人做| 国内自拍欧美| 在线观看私人影院w| 一区二区三区韩国免费中文网站| 国产av 一区二区三区| 日韩av综合| 国产色综合一区二区三区| 成人片在线看| 奇米影视第四色7777| 国产一二三区av| 在线免费观看av的网站| 国内精品不卡在线| 欧美在线观看视频| 国产成人自拍视频在线| 在线日本视频| 亚洲福利国产精品| 欧美色图888| 国产探花视频在线观看| 久久免费视频网| 超碰cao国产精品一区二区| 人人超在线公开视频| 在线视频自拍| 大香伊人中文字幕精品| av黄在线观看| 中文字幕欧美三区| 9l亚洲国产成人精品一区二三| 亚洲自拍第二页| 亚洲最大成人在线视频| 精品人妻少妇嫩草av无码专区| 亚洲夂夂婷婷色拍ww47| 从欧美一区二区三区| 国产成免费视频| 免费性色视频| 亚洲欧美日韩一区在线| 国产在线青青草| 国产精品午夜在线| 欧美裸体bbwbbwbbw| gogogo高清在线观看一区二区| 欧美插插视频| 永久av免费在线观看| 成年人福利视频| 8v天堂国产在线一区二区| 久久久久久久久久久9不雅视频| 久久精品久久久久久久| 黑人精品一区二区三区| 成人欧美大片| 亚洲精品无播放器在线播放| 欧洲av不卡| 图片区乱熟图片区亚洲| 亚洲欧美日韩一区二区三区在线| 久久亚洲黄色| 色乱码一区二区三在线看| 亚洲一区二区自拍偷拍| 中文字幕有码热在线视频| 精品国产一区二区精华| 国产三级午夜理伦三级| 你懂的在线观看视频| www.97超碰| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品入口免费麻豆| 国产精品青青在线观看爽香蕉| 性欧美极品xxxx欧美一区二区| 91麻豆精品国产91久久久更新资源速度超快| 亚洲成人久久久久| av网站在线看| 亚洲综合色网站| 欧美在线一二三四区| 作爱视频免费观看视频在线播放激情网| 色一情一区二区三区| 亚洲成人av在线影院| 91影视免费在线观看| 欧美日韩国产麻豆| 婷婷综合在线视频| 亚洲一区二区三区网站| 亚洲美女喷白浆| 三上悠亚在线免费观看|