ホームページ  >  記事  >  バックエンド開発  >  YII は、url コンポーネントを使用してメソッドを美化し、管理します。yiiurl コンポーネント beautification_PHP チュートリアル

YII は、url コンポーネントを使用してメソッドを美化し、管理します。yiiurl コンポーネント beautification_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-12 09:02:22923ブラウズ

YIIはurlコンポーネントを使用して美化と管理を行い、yiiurlコンポーネントは美化します

この記事では、YIIがurlコンポーネントを使用して美化と管理を行う例について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

urlManager コンポーネント

yii の公式ドキュメントでは、これについて次のように説明されています:

urlSuffix このルールで使用される URL サフィックスは、デフォルトでは CurlManger::urlSuffix が使用され、値は null です。たとえば、これを .html に設定すると、URL を静的ページのように見せることができます。
caseSensitive 大文字と小文字を区別するかどうかに関係なく、CUrlManager::caseSensitive がデフォルトで使用され、値は null です。
defaultParams このルールで使用されるデフォルトの取得パラメータ。このルールを使用してリクエストを解析すると、このパラメータの値が $_GET パラメータに挿入されます。
matchValue URL を作成するとき、GET パラメーターが対応するサブパターンと一致するかどうか。デフォルトでは、CurlManager::matchValue が使用され、値は null です。

この属性が false の場合、ルートとパラメータ名が指定されたルールに一致すると、それに応じて URL が作成されることを意味します。

この属性が true の場合、指定されたパラメーター値は、対応するパラメーターのサブパターンと一致する必要があります。

注: このプロパティを true に設定すると、パフォーマンスが低下します。

いくつかの例を使用して URL の動作ルールを説明します。ルールに次の 3 つが含まれていると仮定しましょう:

リーリー

$this->createUrl('post/list') を呼び出して /index.php/posts を生成します。最初のルールが適用されます。

$this->createUrl('post/read',array('id'=>100)) を呼び出して /index.php/post/100 を生成します。 2 番目のルールが適用されます。

$this->createUrl('post/read',array('year'=>2008,'title'=>'a example post')) を呼び出して /index.php/post/2008/a を生成します% 20サンプル% 20投稿。 3 番目のルールが適用されます。

$this->createUrl('post/read') を呼び出して /index.php/post/read を生成します。ルールは適用されませんのでご注意ください。

要約すると、createUrl を使用して URL を生成する場合、メソッドに渡されるルートと GET パラメーターを使用して、どの URL ルールが適用されるかを決定します。アソシエーション ルールの各パラメータが GET パラメータで見つかると、そのパラメータが createUrl に渡されます。ルート ルールもルート パラメータと一致すると、そのルールが URL の生成に使用されます。

createUrl に渡される GET パラメータが上記で必要なルールの 1 つである場合、他のパラメータはクエリ文字列に表示されます。たとえば、 $this->createUrl('post/read',array('id'=>100,'year'=>2008)) を呼び出すと、 /index.php/post/100 が取得されます。 ? 年 = 2008 年。これらの追加パラメータをパス情報の一部として表示するには、ルールに /* を追加する必要があります。 したがって、ルール post/3493f3358a126a26f38915ea72d0923c/* を使用すると、URL /index.php/post/100/year/2008 を取得できます。

前述したように、URL ルールの他の用途は、リクエスト URL を解析することです。もちろん、これは URL 生成の逆のプロセスです。たとえば、ユーザーが /index.php/post/100 をリクエストすると、上記の例の 2 番目のルールが適用されて、ルート post/read と GET パラメータ array('id'=>100) ($ から入手可能) が解析されます。 _得る)。

ヒント: この URL は、createurl メソッドによって生成された相対アドレスです。絶対 URL を取得するには、接頭辞 yii: :app()->hostInfo を使用するか、createAbsoluteUrl を呼び出します。

注: 使用される URL ルールにより、アプリケーションのパフォーマンスが低下します。これは、要求された URL を解析するときに、[CUrlManager] が特定のルールが適用されるまで、各ルールを使用して URL との一致を試みるためです。したがって、トラフィックの多い Web サイト アプリケーションでは、使用する URL ルールを最小限に抑える必要があります。

test.com/vthot は test.com/vthot/
を生成したいと考えています コードをコピーします コードは次のとおりです: 'urlSuffix'=>'/',
URL 形式を変更するには、createUrl が自動的に新しい形式に切り替わり、アプリケーションが新しい URL を正しく理解できるように、urlManager アプリケーション要素を構成する必要があります。 リーリー

例1

ルールコード


コードをコピーします コードは次のとおりです: 'posts'=>'post/list', アクションコード

コードをコピーします コードは次のとおりです: echo $this->createAbsoluteUrl('post/list');

出力

http://localhost/test/index.php/post

例 2

ルールコード


コードをコピーします コードは次のとおりです: 'post/3493f3358a126a26f38915ea72d0923c'=>array('post/show','urlSuffix'=>'.html'), アクションコード

コードをコピーします コードは次のとおりです: echo $this->createAbsoluteUrl('post/show',array('id'=>998, 'name'=>'123'));

出力

http://localhost/test/index.php/post/998.html?name=123

例 3

ルールコード:


コードをコピーします コードは次のとおりです:'post/3493f3358a126a26f38915ea72d0923c/53690147baa14784d9947e96aba2f78f'=>array('post/view','urlSuffix'=>) ;'.xml ')、

Action代码
复制代码 代码如下:echo $this->createAbsoluteUrl('post/view',array('id'=>998, 'mid'=>'tody'));
输出

http://localhost/test/index.php/post/998/tody.xml

示例四

Rule代码
复制代码 代码如下:'http://a94b0a6f6db3649c01a585a80fa7efd7.vt.com/dbfcd3f9832b3d444ccfdb2a9da766bb'=>array('a75dfea808c5bbe57b36ff9aeb68f436/host','urlSuffix'=>'.me'),

Action代码:

echo $this->createAbsoluteUrl('look/host',array('user'=>'boy','mid'=>'ny-01'));
echo '';
echo $this->createAbsoluteUrl('looks/host',array('user'=>'boy','mid'=>'ny-01'));

输出

http://boy.vt.com/look.me?mid=ny-01
http://localhost/test/index.php/looks/host/user/boy/mid/ny-01

1)controller/Update/id/23

public function actionUpdate(){
  $id = Yii::app()->request->getQuery('id') ; 经过处理的$_GET['id']
}
//$id = Yii::app()->request->getPost('id'); 经过处理的$_POST['id']
//$id = Yii::app()->request->getParam('id'); //CHttpRequest更多

2)public function actionUpdate($id)  这种不支持多主键,会检查一下到底GET里面有没有id,没有id就直接不允许访问

'sayhello/<name>' => 'post/hello', name是PostController actionHello($name)的参数
'post/<alias:[-a-z]+>' => 'post/view',  domain/post/e文小写 其中:前面的alias是PostController actionView($alias)的参数
'(posts|archive)/<order:(DESC|ASC)>' => 'post/index', domain/posts/DESC或domain/posts/ASC
'(posts|archive)' => 'post/index', domain/posts或domain/archive
'tos' => array('website/page', 'defaultParams' => array('alias' =>'terms_of_service')),

When the URL is /tos, pass terms_of_service as the alias parameter value.

隐藏 index.php

还有一点,我们可以做进一步清理我们的网址,即在URL中藏匿index.php  入口脚本。这就要求我们配置Web服务器,以及urlManager应用程序元件。

1.add showScriptName=>false

2.add project/.htaccess

RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php

3.开启rewrite

简单的说,在main.php中简单设置urlManager,然后讲了3条规则,基本都覆盖到了。最后是隐藏index.php,请记住.htaccess位于index.php同级目录 ,而不是protected/目录。其他就简单了。

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

您可能感兴趣的文章:

  • YiiFramework入门知识点总结(图文教程)
  • Yii入门教程之目录结构、入口文件及路由设置
  • Yii入门教程之Yii安装及hello world
  • Yii PHP Framework实用入门教程(详细介绍)
  • Yii查询生成器(Query Builder)用法实例教程
  • Yii实现单用户博客系统文章详情页插入评论表单的方法
  • Yii中CGridView实现批量删除的方法
  • Yii快速入门经典教程

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1085880.htmlTechArticleYII使用url组件美化管理的方法,yiiurl组件美化 本文实例讲述了YII使用url组件美化管理的方法。分享给大家供大家参考,具体如下: urlMana...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。