目次
YIIはurlコンポーネントを使用して美化と管理を行い、yiiurlコンポーネントは美化します
您可能感兴趣的文章:
ホームページ バックエンド開発 PHPチュートリアル YII は、url コンポーネントを使用してメソッドを美化し、管理します。yiiurl コンポーネント beautification_PHP チュートリアル

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

Jul 12, 2016 am 09:02 AM
url yii コンポーネント

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/<id:d+>/* を使用すると、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/<id:d+>'=>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/<id:d+>/<mid:w+>'=>array('post/view','urlSuffix'=&gt) ;'.xml ')、

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

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

示例四

Rule代码
复制代码 代码如下:'http://<user:\w+>.vt.com/<_c:(look|seek)>'=>array('<_c>/host','urlSuffix'=>'.me'),

Action代码:

1

2

3

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

echo '';

echo $this-&gt;createAbsoluteUrl('looks/host',array('user'=&gt;'boy','mid'=&gt;'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

1

2

3

4

5

public function actionUpdate(){

  $id = Yii::app()-&gt;request-&gt;getQuery('id') ; 经过处理的$_GET['id']

}

//$id = Yii::app()-&gt;request-&gt;getPost('id'); 经过处理的$_POST['id']

//$id = Yii::app()-&gt;request-&gt;getParam('id'); //CHttpRequest更多

ログイン後にコピー

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

1

2

3

4

5

'sayhello/&lt;name&gt;' =&gt; 'post/hello', name是PostController actionHello($name)的参数

'post/&lt;alias:[-a-z]+&gt;' =&gt; 'post/view',  domain/post/e文小写 其中:前面的alias是PostController actionView($alias)的参数

'(posts|archive)/&lt;order:(DESC|ASC)&gt;' =&gt; 'post/index', domain/posts/DESC或domain/posts/ASC

'(posts|archive)' =&gt; 'post/index', domain/posts或domain/archive

'tos' =&gt; array('website/page', 'defaultParams' =&gt; array('alias' =&gt;'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

1

2

3

4

5

6

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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 10 旧バージョンコンポーネント DirectPlay のインストール方法 Windows 10 旧バージョンコンポーネント DirectPlay のインストール方法 Dec 28, 2023 pm 03:43 PM

Windows 10 旧バージョンコンポーネント DirectPlay のインストール方法

PHP 関数の紹介 - get_headers(): URL の応答ヘッダー情報を取得します PHP 関数の紹介 - get_headers(): URL の応答ヘッダー情報を取得します Jul 25, 2023 am 09:05 AM

PHP 関数の紹介 - get_headers(): URL の応答ヘッダー情報を取得します

e からの NameResolutionError(self.host, self, e) の理由とその解決方法 e からの NameResolutionError(self.host, self, e) の理由とその解決方法 Mar 01, 2024 pm 01:20 PM

e からの NameResolutionError(self.host, self, e) の理由とその解決方法

Vueを使用してカレンダーコンポーネントを実装するにはどうすればよいですか? Vueを使用してカレンダーコンポーネントを実装するにはどうすればよいですか? Jun 25, 2023 pm 01:28 PM

Vueを使用してカレンダーコンポーネントを実装するにはどうすればよいですか?

Angular コンポーネントとその表示プロパティ: 非ブロックのデフォルト値について Angular コンポーネントとその表示プロパティ: 非ブロックのデフォルト値について Mar 15, 2024 pm 04:51 PM

Angular コンポーネントとその表示プロパティ: 非ブロックのデフォルト値について

古いバージョンのwin10コンポーネントの設定を開く方法 古いバージョンのwin10コンポーネントの設定を開く方法 Dec 22, 2023 am 08:45 AM

古いバージョンのwin10コンポーネントの設定を開く方法

htmlとurlの違いは何ですか htmlとurlの違いは何ですか Mar 06, 2024 pm 03:06 PM

htmlとurlの違いは何ですか

Scrapy 最適化のヒント: 重複 URL のクロールを減らし、効率を向上させる方法 Scrapy 最適化のヒント: 重複 URL のクロールを減らし、効率を向上させる方法 Jun 22, 2023 pm 01:57 PM

Scrapy 最適化のヒント: 重複 URL のクロールを減らし、効率を向上させる方法

See all articles