Rumah pembangunan bahagian belakang tutorial php yii框架中的Url生产问题小结_PHP

yii框架中的Url生产问题小结_PHP

Jun 01, 2016 pm 12:13 PM
url

复制代码 代码如下:



假定设定了UrlManager的配置为Path模式,用yii默认的配置:
复制代码 代码如下:
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'/'=>'/view',
'//'=>'/',
'/'=>'/',
),
),

上面两行代码会生产什么样的链接地址?
http:///user/register //错误链接
http:///index.php/user/register //正确链接
第一个链接是错误的,浏览器会返回404错误。第二个链接会访问UserController的Register方法。区别就在于第二个链接在生成的时候我们传入的参数是一个array数组,而第一个方法是一个简单字符串。Yii在处理Url的时候,遇到简单字符串会直接使用该字符串作为最终的Url,而当遇到数组的时候会调用Controller的CreateUrl来生成Url.
说到简单字符串,这两个链接中其实有一个非常本质的区别。虽然同样都是字符串'user/register',但是在第一个字符串中就代表一个13个字符的相对路径,而第二个链接中则代表UserController的registerAction,是有着特俗意义的。
附上Yii处理Url的方法NormalizeUrl的源代码:
复制代码 代码如下:
/**
* Normalizes the input parameter to be a valid URL.
*
* If the input parameter is an empty string, the currently requested URL will be returned.
*
* If the input parameter is a non-empty string, it is treated as a valid URL and will
* be returned without any change.
*
* If the input parameter is an array, it is treated as a controller route and a list of
* GET parameters, and the {@link CController::createUrl} method will be invoked to
* create a URL. In this case, the first array element refers to the controller route,
* and the rest key-value pairs refer to the additional GET parameters for the URL.
* For example, array('post/list', 'page'=>3) may be used to generate the URL
* /index.php?r=post/list&page=3.
*
* @param mixed $url the parameter to be used to generate a valid URL
* @return string the normalized URL
*/
public static function normalizeUrl($url)
{
if(is_array($url))
{
if(isset($url[0]))
{
if(($c=Yii::app()->getController())!==null)
$url=$c->createUrl($url[0],array_splice($url,1));
else
$url=Yii::app()->createUrl($url[0],array_splice($url,1));
}
else
$url='';
}
return $url==='' ? Yii::app()->getRequest()->getUrl() : $url;
}
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pengenalan fungsi PHP—get_headers(): Dapatkan maklumat pengepala respons URL Pengenalan fungsi PHP—get_headers(): Dapatkan maklumat pengepala respons URL Jul 25, 2023 am 09:05 AM

Pengenalan fungsi PHP—get_headers(): Dapatkan maklumat pengepala respons URL

Mengapa NameResolutionError(self.host, self, e) daripada e dan cara menyelesaikannya Mengapa NameResolutionError(self.host, self, e) daripada e dan cara menyelesaikannya Mar 01, 2024 pm 01:20 PM

Mengapa NameResolutionError(self.host, self, e) daripada e dan cara menyelesaikannya

Bagaimana untuk mendapatkan ID Steam anda dalam beberapa langkah? Bagaimana untuk mendapatkan ID Steam anda dalam beberapa langkah? May 08, 2023 pm 11:43 PM

Bagaimana untuk mendapatkan ID Steam anda dalam beberapa langkah?

Cara menggunakan pengekodan dan penyahkodan URL dalam Java Cara menggunakan pengekodan dan penyahkodan URL dalam Java May 08, 2023 pm 05:46 PM

Cara menggunakan pengekodan dan penyahkodan URL dalam Java

Apakah perbezaan antara html dan url Apakah perbezaan antara html dan url Mar 06, 2024 pm 03:06 PM

Apakah perbezaan antara html dan url

Petua pengoptimuman buruk: Cara mengurangkan rangkak URL pendua dan meningkatkan kecekapan Petua pengoptimuman buruk: Cara mengurangkan rangkak URL pendua dan meningkatkan kecekapan Jun 22, 2023 pm 01:57 PM

Petua pengoptimuman buruk: Cara mengurangkan rangkak URL pendua dan meningkatkan kecekapan

Cara menambah awalan URL pada berbilang pengawal SpringBoot Cara menambah awalan URL pada berbilang pengawal SpringBoot May 12, 2023 pm 06:37 PM

Cara menambah awalan URL pada berbilang pengawal SpringBoot

Bagaimana untuk mengkonfigurasi pengalihan url nginx Bagaimana untuk mengkonfigurasi pengalihan url nginx May 12, 2023 am 10:31 AM

Bagaimana untuk mengkonfigurasi pengalihan url nginx

See all articles