多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > ZendFramework > Zend Framework教程-Zend_Helpers-視圖助手-常見(jiàn)的視圖助手-其它

Zend Framework教程-Zend_Helpers-視圖助手-常見(jiàn)的視圖助手-其它

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-03-04 22:43:44 閱讀次數(shù):3583次

視圖助手提供了較多的助手,如果想了解這些助手類(lèi)的使用方法,可以通過(guò)找到相應(yīng)的類(lèi),看源代碼,來(lái)學(xué)習(xí)使用方法。通過(guò)助手的參數(shù)名稱(chēng)就可以了解到助手需要傳入的值,這里就不再細(xì)說(shuō)了,下面大體按照助手分類(lèi)來(lái)羅列一下常見(jiàn)的視圖助手。


一、HTML相關(guān)

主要是用來(lái)操作,生成form元素的,通常我們使用原生的form元素就可以了,沒(méi)有必要使用zend提供的方法來(lái)生成這些元素。

zend提供的常見(jiàn)生成form元素的方法以及使用舉例:

  • fieldset($name, $content, $attribs): 生成一個(gè) XHTML fieldset. 如果$attribs 包含一個(gè) 'legend' 鍵,它的值將用于 fieldset legend。 Fieldset 將環(huán)繞在$content 周?chē)峁┙o助手。

  • form($name, $attribs, $content): 生成一個(gè) XHTML 表單。所有$attribs 轉(zhuǎn)義和解析成表單標(biāo)簽的 XHTML 屬性。如果 $content 不以布爾 false 出現(xiàn),那么內(nèi)容就是在表單標(biāo)簽內(nèi)被解析,如果$content 是布爾 false (缺省),只有開(kāi)頭的表單標(biāo)簽被生成。

  • formButton($name, $value, $attribs): 生成 <button /> 元素;

  • formCheckbox($name, $value, $attribs,$options): 生成 <input type="checkbox" /> 元素。

    缺省地,當(dāng)沒(méi)有提供 $value 并且沒(méi)有 $options,'0' 被假定為未選的值,'1'為選中的值。 如果傳遞 $value,但沒(méi)有 $options,選中的值就被假定為傳遞的值。

    $options 應(yīng)當(dāng)是數(shù)組。如果數(shù)組被索引,第一個(gè)值就是選中的值,第二個(gè)是未選的值, 所有其它值被忽略。 你也可傳遞一個(gè)帶有鍵為 'checked' 和 'unChecked' 的聯(lián)合數(shù)組。

    如果傳遞了 $options,如果 $value 匹配選中的值,元素將標(biāo)記為選中。你也通過(guò)傳遞 一個(gè)布爾值給屬性 'checked' 來(lái)標(biāo)記元素為選中或未選。

    上述內(nèi)容可能最好匯總成一些例子: 

    <?php// '1' and '0' as checked/unchecked options; not checkedecho $this->formCheckbox('foo');// '1' and '0' as checked/unchecked options; checkedecho $this->formCheckbox('foo', null, array('checked' => true));// 'bar' and '0' as checked/unchecked options; not checkedecho $this->formCheckbox('foo', 'bar');// 'bar' and '0' as checked/unchecked options; checkedecho $this->formCheckbox('foo', 'bar', array('checked' => true));// 'bar' and 'baz' as checked/unchecked options; uncheckedecho $this->formCheckbox('foo', null, null, array('bar', 'baz');// 'bar' and 'baz' as checked/unchecked options; uncheckedecho $this->formCheckbox('foo', null, null, array(    'checked' => 'bar',    'unChecked' => 'baz'));// 'bar' and 'baz' as checked/unchecked options; checkedecho $this->formCheckbox('foo', 'bar', null, array('bar', 'baz');echo $this->formCheckbox('foo', null, array('checked' => true), array('bar', 'baz');// 'bar' and 'baz' as checked/unchecked options; uncheckedecho $this->formCheckbox('foo', 'baz', null, array('bar', 'baz');echo $this->formCheckbox('foo', null, array('checked' => false), array('bar', 'baz');


    對(duì)所有情況,標(biāo)記預(yù)先準(zhǔn)備一個(gè)帶有未選的值的隱藏元素。 這樣,如果值是未選的,你將仍獲得有效的返回到表單的值。

  • formErrors($errors, $options): 生成一個(gè)無(wú)順序的 XHTML 列表來(lái)顯示錯(cuò)誤。$errors 是個(gè)字符串或字符串?dāng)?shù)組;$options 是你想放入開(kāi)頭列表標(biāo)簽的任何屬性。

    當(dāng)通過(guò)調(diào)用助手中的方法時(shí),你可以指定替代的開(kāi)頭,結(jié)尾和分隔符:

    • setElementStart($string); 缺省為 '<ul class="errors"%s"><li>', 其中 %s 是在$options 中被替換的屬性。

    • setElementSeparator($string); 缺省為 '</li><li>'。

    • setElementEnd($string); 缺省為 '</li></ul>'。

  • formFile($name, $value, $attribs): 生成<input type="file" />

  • formHidden($name, $value, $attribs): 生成<input type="hidden" />

  • formLabel($name, $value, $attribs): 生成 <label>設(shè)置for 屬性給 $name,實(shí)際的標(biāo)簽字符給 $value。 如果 disable 傳遞給 attribs,什么都不返回。

  • formMultiCheckbox($name, $value, $attribs, $options, $listsep): 生成一個(gè) checkboxes 列表。$options 是個(gè)聯(lián)合數(shù)組,可以有任意的深度。$value 可以是單個(gè)的值或者是可選的匹配在$options 數(shù)組中的鍵的一個(gè)數(shù)組。$listsep 缺省為一個(gè) HTML break ("<br />")。缺省地,這個(gè)元素被當(dāng)作數(shù)組,所有 checkboxes 共享同一個(gè)名稱(chēng),并以數(shù)組的形式提交。

  • formPassword($name, $value, $attribs): Creates an <input type="password" /> element.

  • formRadio($name, $value, $attribs, $options): 生成一系列<input type="button" />,每個(gè)$options數(shù)組元素一個(gè),key為radio的值,并且元素的值是radio的標(biāo)簽。

  • formReset($name, $value, $attribs): 生成<input type="reset" />

  • formSelect($name, $value, $attribs, $options): 生成<select>...</select>其中的每個(gè)<option>對(duì)應(yīng)于一個(gè)$option數(shù)組元素。元素的key是option的值,元素的值是option的標(biāo)簽。$value這個(gè)值的option默認(rèn)為選中。

  • formSubmit($name, $value, $attribs): 生成<input type="submit" />

  • formText($name, $value, $attribs): 生成<input type="text" />

  • formTextarea($name, $value, $attribs): 生成<textarea>...</textarea>

  • url($urlOptions, $name, $reset): 基于已命名的路由生成URL字符串。$urlOptions 必須是一個(gè)鍵/值對(duì)應(yīng)的關(guān)聯(lián)數(shù)組,用于特定的路由。

  • htmlList($items, $ordered, $attribs): 基于傳遞給它的$items 生成無(wú)序的和有序的列表。如果 $items 是多維數(shù)組,將創(chuàng)建嵌套的列表。

以上helper的使用非常簡(jiǎn)單,下面是個(gè)例子。注意你只需要調(diào)用即可,它們會(huì)根據(jù)需要自己加載并實(shí)例化。 

<?php// 在你的view腳本內(nèi)部, $this 指向 Zend_View 實(shí)例.//// 假設(shè)你已經(jīng)為select對(duì)應(yīng)的變量$countries指定一系列option值,// array('us' => 'United States', 'il' =>// 'Israel', 'de' => 'Germany').?><form action="action.php" method="post">    <p><label>Your Email:        <?php echo $this->formText('email', 'you@example.com', array('size' => 32)) ?>    </label></p>    <p><label>Your Country:        <?php echo $this->formSelect('country', 'us', null, $this->countries) ?>    </label></p>    <p><label>Would you like to opt in?        <?php echo $this->formCheckbox('opt_in', 'yes', null, array('yes', 'no')) ?>    </label></p></form>


以上視圖腳本會(huì)輸出這樣的結(jié)果: 

<form action="action.php" method="post">    <p><label>Your Email:        <input type="text" name="email" value="you@example.com" size="32" />    </label></p>    <p><label>Your Country:        <select name="country">            <option value="us" selected="selected">United States</option>            <option value="il">Israel</option>            <option value="de">Germany</option>        </select>    </label></p>    <p><label>Would you like to opt in?        <input type="hidden" name="opt_in" value="no" />        <input type="checkbox" name="opt_in" value="yes" checked="checked" />    </label></p></form>        


HTML <object> 元素在網(wǎng)頁(yè)里用于嵌入媒體如 Flash 或 QuickTime。 對(duì)象視圖助手用最小的代價(jià)來(lái)幫助嵌入媒體。

有四個(gè)初始的對(duì)象助手:

  • formFlash 為嵌入 Flash 文件生成 markup。

  • formObject 為嵌入定制對(duì)象生成 markup。

  • formPage 為嵌入其它 (X)HTML 頁(yè)面生成 markup。

  • formQuicktime 為嵌入 QuickTime 文件生成 markup。

所有這些助手使用相似的接口。這樣,本文檔只包含兩個(gè)助手的例子。

Example #17 Flash 助手

使用助手嵌入 Flash 到你的頁(yè)面相當(dāng)簡(jiǎn)單。唯一需要的參數(shù)是資源 URI。 

<?php echo $this->htmlFlash('/path/to/flash.swf'); ?>


它輸出下列 HTML: 

<object data="/path/to/flash.swf" type="application/x-shockwave-flash"    classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"    codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"></object>


另外你可以指定可以和 <object> 一起解析的屬性、參數(shù)和內(nèi)容。 這個(gè)用 htmlObject 助手來(lái)示范。

Example #18 通過(guò)傳遞另外的參數(shù)來(lái)定制對(duì)象

對(duì)象助手里的第一個(gè)參數(shù)總是必需的,它是你想嵌入的資源的 URI。 第二個(gè)參數(shù)只對(duì) htmlObject 助手是必需的,其它助手對(duì)這個(gè)參數(shù)已經(jīng)有了正確的值。 第三個(gè)參數(shù)用來(lái)傳遞屬性到對(duì)象元素,它只接受帶有key-value對(duì)的數(shù)組,classidcodebase 是這個(gè)屬性的例子。 第四個(gè)參數(shù)也用帶有key-value對(duì)的數(shù)組并用它們生成 <param> 元素,你將很快看到一個(gè)這樣的例子。 最后一個(gè)是提供另外的內(nèi)容給對(duì)象的選項(xiàng)。來(lái)看一下使用所有參數(shù)的例子。 

echo $this->htmlObject(    '/path/to/file.ext',    'mime/type',    array(        'attr1' => 'aval1',        'attr2' => 'aval2'    ),    array(        'param1' => 'pval1',        'param2' => 'pval2'    ),    'some content');/*這將輸出:<object data="/path/to/file.ext" type="mime/type"    attr1="aval1" attr2="aval2">    <param name="param1" value="pval1" />    <param name="param2" value="pval2" />    some content</object>*/


二、URL相關(guān)

主要用來(lái)獲取和生成url 

Zend_View_Helper_BaseUrl:獲取根路徑

使用方法:

<?php echo $this->baseUrl();?>


例如訪(fǎng)問(wèn)

http://www.localzend.com/helper_demo1/public/index/index


對(duì)應(yīng)的是

/helper_demo1/public

常見(jiàn)用法是在base標(biāo)簽,或者引用外部資源是使用,

<?php echo $this->headScript()	->appendFile($this->baseUrl().'/ui_1/js/jquery-1.7.1.min.js') 	->appendFile($this->baseUrl().'/ui_1/js/common.js')	;?>


Zend_View_Helper_Url:用來(lái)生成一個(gè)url

class Zend_View_Helper_Url extends Zend_View_Helper_Abstract{    /**     * Generates an url given the name of a route.     *     * @access public     *     * @param  array $urlOptions Options passed to the assemble method of the Route object.     * @param  mixed $name The name of a Route to use. If null it will use the current Route     * @param  bool $reset Whether or not to reset the route defaults with those provided     * @return string Url for the link href attribute.     */    public function url(array $urlOptions = array(), $name = null, $reset = false, $encode = true)    {        $router = Zend_Controller_Front::getInstance()->getRouter();        return $router->assemble($urlOptions, $name, $reset, $encode);    }}


參數(shù)$urlOptions是個(gè)數(shù)組:

參數(shù)$name默認(rèn)為空,路由名稱(chēng)

參數(shù)$encode是否對(duì)內(nèi)容進(jìn)行編碼


使用方法如下:

<?php echo $this->baseUrl();?>	<?php echo $this->url(array('action'=>'add','controller'=>'user','module'=>'default'),null,true);?>	<?php echo $this->url(array('action'=>'add','controller'=>'user'),null,true);?>		<?php echo $this->url(array('action'=>'add','controller'=>'user','module'=>'manage'),null,false);?>	<?php echo $this->url(array('action'=>'add','controller'=>'user','module'=>'manage'),null,true);?>	<?php echo $this->url(array('action'=>'add','controller'=>'user','username'=>'張三','useremail'=>'a@aa.com'),null,true);?>
輸出如下:

/helper_demo1/public/user/add/helper_demo1/public/user/add/helper_demo1/public/manage/user/add/helper_demo1/public/manage/user/add/helper_demo1/public/user/add/username/%E5%BC%A0%E4%B8%89/useremail/a%40aa.com



三、動(dòng)作視圖助手

    /**     * Retrieve rendered contents of a controller action     *     * If the action results in a forward or redirect, returns empty string.     *     * @param  string $action     * @param  string $controller     * @param  string $module Defaults to default module     * @param  array $params     * @return string     */    public function action($action, $controller, $module = null, array $params = array())    {        $this->resetObjects();        if (null === $module) {            $module = $this->defaultModule;        }        // clone the view object to prevent over-writing of view variables        $viewRendererObj = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');        Zend_Controller_Action_HelperBroker::addHelper(clone $viewRendererObj);        $this->request->setParams($params)                      ->setModuleName($module)                      ->setControllerName($controller)                      ->setActionName($action)                      ->setDispatched(true);        $this->dispatcher->dispatch($this->request, $this->response);        // reset the viewRenderer object to it's original state        Zend_Controller_Action_HelperBroker::addHelper($viewRendererObj);        if (!$this->request->isDispatched()            || $this->response->isRedirect())        {            // forwards and redirects render nothing            return '';        }        $return = $this->response->getBody();        $this->resetObjects();        return $return;    }


Action 視圖助手允許視圖腳本執(zhí)行一個(gè)特定的控制器Action;在執(zhí)行之后的響應(yīng)對(duì)象的結(jié)果將被返回。有時(shí)候特定的Action生成可重用內(nèi)容或“widget-ized”內(nèi)容(在頁(yè)面內(nèi)生成一個(gè)帶有特定功能的小面板,類(lèi)似于Windows Vista的widget,Haohappy注),這時(shí)我們就可以使用本功能。

內(nèi)部調(diào)用_forward() 或者轉(zhuǎn)向的Action在此將無(wú)效,將返回空字符串。

Action視圖助手的API和大部分MVC組件調(diào)用控制器動(dòng)作的方式一樣:action($action,$controller, $module = null, array $params = array())$action$controller 是必須的;如果沒(méi)有指定模塊,缺省模塊將被使用。

Example #1 動(dòng)作視圖助手的基本用法

例如,假設(shè)你有一個(gè)CommentController ,為了給當(dāng)前請(qǐng)求輸出評(píng)論列表,帶一個(gè)可被調(diào)用的 listAction() 方法: 

<div id="sidebar right">    <div class="item">        <?= $this->action('list', 'comment', null, array('count' => 10)); ?>    </div></div>


四、區(qū)域助手(Partial Helper)

作用可以認(rèn)為和smarty中的include類(lèi)似。

Partial 視圖助手被用來(lái)在它自己的變量范圍內(nèi)解析特定的模板。主要用法是(解析)可重用的模板片段,你不需要操心變量名的沖突。另外,它們讓你從特定的模塊指定 partial 視圖腳本。

Partial 的兄弟 PartialLoop 視圖助手允許傳遞可迭代數(shù)據(jù)并為每個(gè)條目解析一部分。

Example #2 Partials 的基本用法

partials 的基本用法是在它自己的視圖范圍內(nèi)解析一個(gè)模板的片段。 

<?php // partial.phtml ?><ul>    <li>From: <?= $this->escape($this->from) ?></li>    <li>Subject: <?= $this->escape($this->subject) ?></li></ul>


你可以這樣從視圖腳本里調(diào)用它: 

<?= $this->partial('partial.phtml', array(    'from' => 'Team Framework',    'subject' => 'view partials')); ?>


解析結(jié)果如下: 

<ul>    <li>From: Team Framework</li>    <li>Subject: view partials</li></ul>


Note: 什么是模型(model)?
Partial 視圖助手一起使用的模型(即partial()的第二個(gè)參數(shù),Haohappy注)可以是下列其中之一:

  • 數(shù)組 。如果傳遞了數(shù)組,它應(yīng)當(dāng)是聯(lián)合數(shù)組,因?yàn)樗?‘鍵/值’ 對(duì)用作為視圖變量的鍵賦值給視圖。

  • 實(shí)現(xiàn)了toArray() 方法的對(duì)象。如果被傳遞的對(duì)象有 toArray() 方法,toArray()的結(jié)果將被當(dāng)作視圖變量賦值給視圖對(duì)象。

  • 標(biāo)準(zhǔn)對(duì)象 。 任何其它對(duì)象將把object_get_vars()的結(jié)果(對(duì)象的所有公共屬性)賦值給視圖對(duì)象。

如果你的模型是一個(gè)對(duì)象,你可能想讓它作為對(duì)象傳遞給 partial 腳本,而不是把它系列化成一個(gè)數(shù)組變量。 你可以通過(guò)設(shè)置適當(dāng)?shù)闹值?'objectKey' 屬性來(lái)完成這個(gè):  
// Tell partial to pass objects as 'model' variable$view->partial()->setObjectKey('model');// Tell partial to pass objects from partialLoop as 'model' variable in final// partial view script:$view->partialLoop()->setObjectKey('model');


當(dāng)傳遞 Zend_Db_Table_Rowsets 給 partialLoop()時(shí)這個(gè)技術(shù)相當(dāng)有用, 因?yàn)槟阍谝晥D腳本里有全部訪(fǎng)問(wèn) row 對(duì)象的權(quán)限,允許你調(diào)用它們的方法(如從父或依賴(lài)的 rows 獲取數(shù)據(jù))。

Example #3 使用 PartialLoop 來(lái)解析可迭代的(Iterable)的模型

可能你常常會(huì)需要在一個(gè)循環(huán)里使用 partials 來(lái)輸出相同的內(nèi)容片段多次,這時(shí)你就可以把大塊的重復(fù)的內(nèi)容或復(fù)雜的顯示邏輯放到一個(gè)地方。然而這對(duì)性能有影響,因?yàn)閜artial助手需要在每個(gè)迭代里調(diào)用一次。

PartialLoop 視圖助手解決了這個(gè)問(wèn)題。 它允許你把迭代條目(實(shí)現(xiàn)Iterator的數(shù)組或?qū)ο螅┊?dāng)做模型來(lái)傳遞。它這些把這些條目當(dāng)作模型迭代、傳遞給 partial 腳本。在迭代器里的條目可以是Partial 視圖助手允許的任何模型。

讓我們看一下下面的 partial 視圖腳本: 

<? // partialLoop.phtml ?>    <dt><?= $this->key ?></dt>    <dd><?= $this->value ?></dd>


添加下列 "model": 

<?php$model = array(    array('key' => 'Mammal', 'value' => 'Camel'),    array('key' => 'Bird', 'value' => 'Penguin'),    array('key' => 'Reptile', 'value' => 'Asp'),    array('key' => 'Fish', 'value' => 'Flounder'),);?>


在視圖腳本中,你可以這樣調(diào)用 PartialLoop 助手: 

<dl><?= $this->partialLoop('partialLoop.phtml', $model) ?></dl><dl></dl>    <dt>Mammal</dt>    <dd>Camel</dd>    <dt>Bird</dt>    <dd>Penguin</dd>    <dt>Reptile</dt>    <dd>Asp</dd>    <dt>Fish</dt>    <dd>Flounder</dd></dl>

Example #4 在其它模塊中解析 Partials

有時(shí)候 partial 存在于不同的模塊(Module)。如果你知道模塊的名稱(chēng),你可以把它當(dāng)作第二個(gè)參數(shù)傳遞給 partial() 或者partialLoop(),把 $model 作為第三個(gè)參數(shù)。

例如,如果一個(gè)你想用一個(gè)在 'list' 模塊的 pager partial,就象下面這樣來(lái)運(yùn)用: 

<?= $this->partial('pager.phtml', 'list', $pagerData) ?>


這樣,你可以重用原來(lái)是特別供給其它模塊使用的 partials 。所以,在共享的視圖腳本路徑里放置可重用的 partials 很可能是個(gè)好習(xí)慣。  


 

五、JSON 助手 

    /**     * Encode data as JSON, disable layouts, and set response header     *     * If $keepLayouts is true, does not disable layouts.     *     * @param  mixed $data     * @param  bool $keepLayouts     * NOTE:   if boolean, establish $keepLayouts to true|false     *         if array, admit params for Zend_Json::encode as enableJsonExprFinder=>true|false     *         this array can contains a 'keepLayout'=>true|false     *         that will not be passed to Zend_Json::encode method but will be used here     * @return string|void     */    public function json($data, $keepLayouts = false)    {        $options = array();        if (is_array($keepLayouts))        {            $options     = $keepLayouts;            $keepLayouts = (array_key_exists('keepLayouts', $keepLayouts))                            ? $keepLayouts['keepLayouts']                            : false;            unset($options['keepLayouts']);        }        $data = Zend_Json::encode($data, null, $options);        if (!$keepLayouts) {            require_once 'Zend/Layout.php';            $layout = Zend_Layout::getMvcInstance();            if ($layout instanceof Zend_Layout) {                $layout->disableLayout();            }        }        $response = Zend_Controller_Front::getInstance()->getResponse();        $response->setHeader('Content-Type', 'application/json', true);        return $data;    }


當(dāng)創(chuàng)建返回 JSON 的視圖,設(shè)置適當(dāng)?shù)捻憫?yīng)頭也非常重要,JSON 視圖助手就是來(lái)做這個(gè)的。另外,缺省地,它關(guān)閉(disable)了布局(如果布局是打開(kāi)(enable)的),因?yàn)椴季忠话悴缓?JSON 響應(yīng)一起使用。

JSON 助手設(shè)置下列的頭: 

Content-Type: application/json


當(dāng)解析響應(yīng)來(lái)決定如何處理內(nèi)容,大部分 AJAX 庫(kù)尋找這個(gè)頭。

JSON 助手的用法相當(dāng)簡(jiǎn)單: 

<?php<?= $this->json($this->data) ?>?>


六、翻譯助手


在國(guó)際化章節(jié)簡(jiǎn)寫(xiě)說(shuō)明

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線(xiàn)----------------------------
分享到:
------分隔線(xiàn)----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲精品乱码久久久久久蜜桃欧美 | 国产美女亚洲精品久久久久久 | 欧美另类bbw | 亚洲综合日韩中文字幕v在线 | 国产欧美日韩精品高清二区综合区 | 免费观看www | 亚洲精品一区二区三区中文字幕 | 亚洲免费视频一区二区三区 | 在线观看国产免费高清不卡 | 亚洲免费视频网 | 成年人免费看视频 | 日韩中文一区 | 国产一区二区视频在线 | 日本韩国一区二区三区 | 亚洲一区自拍 | 福利二区视频 | 国产成人精品日本亚洲专 | 国产啪视频1000部免费视频 | 亚洲国产日韩欧美一区二区三区 | freee性欧美 freefromevideos性欧美 | 波多野结衣在线观看一区二区 | 成人在线视频一区 | 男女小视频在线观看 | 免费大片在线观看www | 快色成人 | 精品女同一区二区三区在线 | 性色综合 | 欧美人与性动交α欧美精品图片 | 日本三级成人中文字幕乱码 | 日本三级午夜理伦三级三 | 中文字幕系列 | 欧美另类视频一区二区三区 | 欧美日韩一二三区 | 看日本黄色大片 | 亚洲国产欧美精品一区二区三区 | 色综合久久综合欧美综合网 | 欧美一级毛片高清免费观看 | 久操美女 | 国产一区二区精品久 | 亚洲综合欧美日本另类激情 | a毛片免费播放全部完整 |