Rumah pembangunan bahagian belakang tutorial php 对于yii框架中Url的生产问题的解决

对于yii框架中Url的生产问题的解决

Jun 19, 2018 pm 01:54 PM
url

yii框架中的Url生产问题小结,需要的朋友可以参考下。

代码如下:

<?php echo CHtml::link(&#39;错误链接&#39;,&#39;user/register&#39;)?> 
<?php echo CHtml::link(&#39;正确链接&#39;,array(&#39;user/register&#39;))?>
Salin selepas log masuk

假定设定了UrlManager的配置为Path模式,用yii默认的配置:

&#39;urlManager&#39;=>array( 
&#39;urlFormat&#39;=>&#39;path&#39;, 
&#39;rules&#39;=>array( 
&#39;<controller:\w+>/<id:\d+>&#39;=>&#39;<controller>/view&#39;, 
&#39;<controller:\w+>/<action:\w+>/<id:\d+>&#39;=>&#39;<controller>/<action>&#39;, 
&#39;<controller:\w+>/<action:\w+>&#39;=>&#39;<controller>/<action>&#39;, 
), 
),
Salin selepas log masuk

上面两行代码会生产什么样的链接地址?
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, <code>array(&#39;post/list&#39;, &#39;page&#39;=>3)</code> may be used to generate the URL 
* <code>/index.php?r=post/list&page=3</code>. 
* 
* @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=&#39;&#39;; 
} 
return $url===&#39;&#39; ? Yii::app()->getRequest()->getUrl() : $url; 
}
Salin selepas log masuk

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

关于yii分页组件的用法

关于yii使用bootstrap的分页样式

对于Yii2.0表关联查询的分析

Atas ialah kandungan terperinci 对于yii框架中Url的生产问题的解决. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat 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(): Gambaran keseluruhan mendapatkan maklumat pengepala respons URL: Dalam pembangunan PHP, kita selalunya perlu mendapatkan maklumat pengepala respons halaman web atau sumber jauh. Fungsi PHP get_headers() boleh dengan mudah mendapatkan maklumat pengepala respons URL sasaran dan mengembalikannya dalam bentuk tatasusunan. Artikel ini akan memperkenalkan penggunaan fungsi get_headers() dan menyediakan beberapa contoh kod yang berkaitan. Penggunaan fungsi get_headers(): get_header

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

Sebab ralat adalah NameResolutionError(self.host,self,e)daripada, yang merupakan jenis pengecualian dalam pustaka urllib3 Sebab ralat ini adalah bahawa resolusi DNS gagal, iaitu nama hos atau alamat IP yang telah cuba diselesaikan tidak dapat ditemui. Ini mungkin disebabkan oleh alamat URL yang dimasukkan tidak betul atau pelayan DNS tidak tersedia buat sementara waktu. Bagaimana untuk menyelesaikan ralat ini Mungkin terdapat beberapa cara untuk menyelesaikan ralat ini: Semak sama ada alamat URL yang dimasukkan adalah betul dan pastikan ia boleh diakses Pastikan pelayan DNS tersedia, anda boleh cuba menggunakan arahan "ping" dalam baris arahan untuk menguji sama ada pelayan DNS tersedia Cuba akses tapak web menggunakan alamat IP dan bukannya nama hos jika di belakang proksi

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

Pada masa kini, ramai pengguna Windows yang suka permainan telah memasuki klien Steam dan boleh mencari, memuat turun dan bermain mana-mana permainan yang bagus. Walau bagaimanapun, kebanyakan profil pengguna mungkin mempunyai nama yang sama, menjadikannya sukar untuk mencari profil atau memautkan profil Steam ke akaun pihak ketiga yang lain atau menyertai forum Steam untuk berkongsi kandungan. Profil tersebut diberikan id 17 digit yang unik, yang kekal sama dan tidak boleh ditukar oleh pengguna pada bila-bila masa, manakala nama pengguna atau URL tersuai boleh. Walau apa pun, sesetengah pengguna tidak mengetahui Steamid mereka, dan penting untuk mengetahui perkara ini. Jangan panik jika anda juga tidak tahu cara mencari Steamid akaun anda. Dalam artikel ini

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

Perbezaan: 1. Definisi yang berbeza, url ialah pencari sumber seragam, dan html ialah bahasa penanda hiperteks 2. Terdapat banyak url dalam html, tetapi hanya satu halaman html boleh wujud dalam url 3. html merujuk kepada; halaman web, dan url merujuk kepada alamat tapak web.

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

Gunakan url untuk mengekod dan menyahkod kelas java.net.URLDecoder.decode(url, format penyahkodan) kaedah penyahkod.penyahkod untuk pengekodan dan penyahkodan. Tukar kepada rentetan biasa, URLEncoder.decode(url, format pengekodan) menukar rentetan biasa menjadi rentetan dalam format yang ditentukan packagecom.zixue.springbootmybatis.test;importjava.io.UnsupportedEncodingException;importjava.net.URLDecoder;importjava.net. URLEncoder

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

Scrapy ialah rangka kerja perangkak Python yang berkuasa yang boleh digunakan untuk mendapatkan sejumlah besar data daripada Internet. Walau bagaimanapun, apabila membangunkan Scrapy, kami sering menghadapi masalah merangkak URL pendua, yang membuang banyak masa dan sumber serta menjejaskan kecekapan. Artikel ini akan memperkenalkan beberapa teknik pengoptimuman Scrapy untuk mengurangkan rangkak URL pendua dan meningkatkan kecekapan perangkak Scrapy. 1. Gunakan atribut start_urls dan allowed_domains dalam perangkak Scrapy untuk

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

Prakata Dalam sesetengah kes, awalan dalam pengawal perkhidmatan adalah konsisten Contohnya, awalan semua URL ialah /context-path/api/v1, dan awalan bersatu perlu ditambahkan pada beberapa URL. Penyelesaian yang boleh difikirkan adalah untuk mengubah suai laluan konteks perkhidmatan dan menambah api/v1 pada laluan konteks global boleh menyelesaikan masalah di atas, tetapi terdapat kelemahan Jika URL mempunyai beberapa awalan URL memerlukan awalan Jika ia adalah api/v2, ia tidak dapat dibezakan Jika anda tidak mahu menambah api/v1 pada beberapa sumber statik dalam perkhidmatan, ia juga tidak dapat dibezakan. Yang berikut menggunakan anotasi tersuai untuk menambahkan awalan URL tertentu secara seragam. satu,

apakah maksud url apakah maksud url Aug 04, 2023 am 11:43 AM

URL ialah singkatan daripada "Uniform Resource Locator", yang bermaksud "Uniform Resource Locator" dalam bahasa Cina. URL ialah alamat yang digunakan untuk mencari dan mengakses sumber tertentu melalui Internet Ia biasanya dilihat dalam penyemakan imbas web dan permintaan HTTP. Fungsi utama URL adalah untuk mencari dan mengakses sumber di Internet Sumber ini boleh menjadi halaman web, gambar, video, dokumen atau fail lain.

See all articles