Yii의 urlManager 구성 요소 구성
이 글에서는 주로 Yii의 urlManager 구성 요소를 소개하는데, 이는 특정 참조 값을 가지고 있습니다. 이제 필요한 친구들이 참조할 수 있습니다.
구성 구성 요소에는 주로 다음이 포함됩니다.
지정된 클래스. 누락된 경우 기본 클래스
속성을 사용하세요. 누락된 경우 기본 클래스의 해당 속성을 사용하세요
Yii의 urlManager 구성 요소 구성 컴포넌트에 대한 간단한 이해
urlManager는 클래스인데 왜 컴포넌트라고 부르나요? 지금은 걱정하지 마세요. 구성 요소에 대한 클래스를 지정해야 한다는 점만 알면 됩니다. 지정하지 않으면 구성 요소에 기본 클래스가 없으면 오류가 보고됩니다. 핵심 구성 요소입니다. B를 설치하고 yii 고급 템플릿을 예로 들어 보겠습니다.
Pis: 별도로 지정하지 않는 한 아래 경로는 네임스페이스가 아닌 파일의 특정 경로를 나타냅니다/frontend/web/index.php
,看到
首先,用数组助手类的merge方法递归合并数组,后覆盖前得出最终配置,然后,将配置数据传到Application
的构造方法里,再执行其run方法。跳转到
verdoryiisoftyiiYii의 urlManager 구성 요소 구성webApplication.php
的run方法,它触发了很多事件,具体就不看了,貌似无关~,components相关东西在哪?搜索components
,发现执行了coreComponents方法,其内容是
并没有发现urlManager的默认类,并且各个配置文件都没为urlManager指定class,为什么没报错?因为它调用了父类的coreComponents
方法。-
跳转到
verdoryiisoftyiiYii의 urlManager 구성 요소 구성baseApplication.php
,原来urlManager组件在这里指定了类。我们已经知道是通过
coreComponents
指定核心组件的类了,但它是如何调用这个方法的呢?回头想想,在入口脚本还干了什么?实例化Application
类时,自动调用构造方法!我们发现省略~webApplication
没有覆盖父类的构造方法,即看父类的构造方法 -
跳转到
preInit
方法,在这个预初始化方法里,接受的参数是引用,即这个方法要对$config
数组改造,重点看大概意思是,如果配置文件没有配置某组件或没有为某组件指定类,这个组件就用
coreComponents
指定的类。将$config
变量构造好后,传到Component::__construct($config)
,开始组件的具体内容,就不往下走了。 -
下面看组件属性的配置,跳到
/项目目录/frontend/config/main.php
,我们看到urlManager组件配置被注释掉了,即意味着其使用了urlManager
组件指定类的属性的默认值,具体在vendoryiisoftyiiYii의 urlManager 구성 요소 구성wbeUrlManager.php
。小结一下:组件配置,一指定类(无默认就要在配置文件写明),二配置属性,属性就是类的成员变量
/frontend/web/index.php
를 열고
첫 번째 , Array Helper Class의 병합 메서드를 사용하여 배열을 재귀적으로 병합하고 마지막 배열은 이전 배열을 덮어써서 최종 구성을 가져옵니다. 그런 다음 구성 데이터를
Application의 생성자에 전달합니다.
를 선택한 다음 해당 실행 메서드를 실행합니다. Yii의 urlManager 구성 요소 구성 添加虚拟主机
为了方便,先给前台项目添加虚拟主机,具体看链接
<VirtualHost *:Yii의 urlManager 구성 요소 구성0>DocumentRoot "${INSTALL_DIR}/www/advanced/frontend/web/"ServerName frontend.advanced.com</VirtualHost>
这步不是必须的~
3 各配置作用
以请求Site
控制器的about
动作为例子
enablePrettyUrl
:Pis:这个设为false,下面的设置都不起作用
false [默认]:通过入口脚本?r=[模块/]控制器/动作 方式访问。即
http://localhost/advanced/frontend/web/index.php?r=site/about
true:开启美化路由,(注意是仅配置这个为ture,其他不配置,即用默认),通过入口脚本/[模块/]控制器/动作 方式访问。即
http://localhost/advanced/frontend/web/index.php/site/about
showScriptName
:完成后,才能通过
http://frontend.advanced.com/site/about
verdoryiisoftyiiYii의 urlManager 구성 요소 구성webApplication.php
의 실행 메소드로 이동합니다. 많은 이벤트가 발생합니다. 자세한 내용은 살펴보지 않겠습니다~.컴포넌트
를 검색해 보니 coreComponents 메소드가 실행되었고 그 내용은
urlManager의 기본 클래스를 찾을 수 없으며 각 구성 파일에서 urlManager에 대한 클래스를 지정하지 않았습니다. 왜 오류가 발생하지 않았습니까? 보고됐나요? 상위 클래스의coreComponents
메서드를 호출하기 때문입니다. 🎜🎜🎜🎜verdoryiisoftyiiYii의 urlManager 구성 요소 구성baseApplication.php
로 이동하세요. urlManager 구성 요소가 여기에서 클래스를 지정하는 것으로 나타났습니다.🎜🎜우리는 핵심 구성 요소 클래스가
coreComponents
를 통해 지정된다는 것을 알고 있는데 이 메서드를 어떻게 호출합니까? 돌이켜보면, 참가 스크립트에서 또 무엇을 했나요?Application
클래스를 인스턴스화하면 생성자가 자동으로 호출됩니다!~webApplication 생략
이 상위 클래스의 구성 방법을 다루지 않는다는 것을 발견했습니다. 즉, 상위 클래스의 구성 방법을 살펴보세요🎜🎜🎜🎜🎜🎜
preInit
메소드로 이동합니다. 이 pre에서 -초기화 방법, 허용되는 매개변수는 참조입니다. 즉, 이 방법은$config 배열을 변환해야 합니다. /000/Yii의 urlManager 구성 요소 구성Yii의 urlManager 구성 요소 구성3/Yii의 urlManager 구성 요소 구성9Yii의 urlManager 구성 요소 구성/Yii의 urlManager 구성 요소 구성Yii의 urlManager 구성 요소 구성cbYii의 urlManager 구성 요소 구성cccceabYii의 urlManager 구성 요소 구성feYii의 urlManager 구성 요소 구성4ccYii의 urlManager 구성 요소 구성fdYii의 urlManager 구성 요소 구성Yii의 urlManager 구성 요소 구성Yii의 urlManager 구성 요소 구성c9Yii의 urlManager 구성 요소 구성Yii의 urlManager 구성 요소 구성cYii의 urlManager 구성 요소 구성Yii의 urlManager 구성 요소 구성-4.png " alt="Yii의 urlManager 구성 요소 구성" title=""/>🎜🎜아마도 🎜구성 파일이 특정 구성 요소를 구성하지 않거나 특정 구성 요소에 대한 클래스를 지정하지 않은 경우를 의미합니다. , 이 구성 요소는
coreComponents
🎜에 지정된 클래스를 사용합니다.$config
변수를 구성한 후 이를Component::__construct($config)
에 전달하여 구성 요소의 특정 콘텐츠를 시작하고 더 이상 진행하지 않습니다. 🎜🎜🎜🎜 구성 요소 속성의 구성을 살펴보겠습니다./Project Directory/frontend/config/main.php
로 이동하면 urlManager 구성 요소 구성이 주석 처리되어 있음을 알 수 있습니다. < 코드>urlManager 구성 요소는 특히vendoryiisoftyiiYii의 urlManager 구성 요소 구성wbeUrlManager.php
에서 클래스 속성의 기본값을 지정합니다.🎜 🎜🎜요약하자면: 구성요소 구성은 먼저 클래스를 지정하고(기본값이 없으면 구성 파일에 명시해야 함), 두 번째 구성 속성, 속성은 클래스의 멤버 변수🎜🎜🎜
RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . index.php
about
Action을 예로 들어🎜🎜🎜🎜enablePrettyUrl
: 🎜🎜🎜Pis: false로 설정하면 다음 설정이 작동하지 않습니다🎜 🎜🎜🎜🎜🎜false [기본값]: 입력 스크립트를 통해?r =[모듈/]컨트롤러/작업 모드 액세스. 즉, http://localhost/advanced/frontend/web/index.php?r=site/about
🎜🎜🎜🎜true: 미화 라우팅을 켭니다. (이것을 true로만 구성하세요. , 기타 항목 없음 구성, 즉 기본값 사용), 항목 스크립트/[모듈/] 컨트롤러/작업 모드를 통해 액세스됩니다. 즉, http://localhost/advanced/frontend/web/index.php/site/about
🎜🎜🎜🎜🎜showScriptName
: 🎜🎜완료 후 http://frontend.advanced.com/site/about
방문🎜true [默认]: 不隐藏入口脚本,即要加入口脚本文件名index.php才能访问到,
http://localhost/advanced/frontend/web/index.php/site/about
false:按理解,设为false,应该是
http://localhost/advanced/frontend/web/site/about
即可访问,但发现是apache提示找不到页面,这意味着,apache服务器找不到url请求的文件,按apache理解,
省略~/web/
下没有site
目录,所以,想要实现隐藏入口脚本,还要在/frontend/web/
下添加.htaccess
文件,官方文档介绍,具体步骤如下:RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . index.php
로그인 후 복사로그인 후 복사
在
.htaccess
添加内容如下,意思是,如果请求的文件或目录找不到,就转到index.php
enableStrictParsing
:
false [默认]:不启用严格解析路由,意思是,如果请求url与所有
rules
规则都不匹配的话,就按照默认的路由处理方式来处理,即按[模块/]控制器/动作,方式去解析url。true:设为true后,当请求url与
rules
规则不匹配,就报错。如,通过
http://frontend.advanced.com/site/about
请求,得到Yii框架的报错提示这意味着,请求经过apache的转发,已经找到目的文件(入口脚本),目的文件运行过程中,没有得到期望参数(没传或验证不通过),因此Yii框架抛异常了。
注意与上面apache提示找不到页面区分~
suffix
: 后缀名,如设置为suffix => '.html
,需通过http://frontend.advanced.com/site/about.html
才能访问到
rules
: 规则的配置就很复杂了,下面详讲。
4 rules
配置
想访问
Site
的about
动作,要在rules里加'site/about' => 'site/about'
로그인 후 복사其中,左边称为
pattern
,对应输入的url,右边为route
,对应[模型/]控制器/动作。如果不想为每个动作都加一个规则,可以这样
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
로그인 후 복사可以这样理解,左边,接收请求url的对应值,对它们作
\w
验证,即必须是字母或数字或下划线,以/site/about
为例,验证通过,赋值给临时变量controller
,action
,右边使用,从而找到Site
控制器的about
动作。同理,模块下的控制器动作也可以这样实现
'<module:\w+>/<controller:\w+>/<action:\w+>' => '<module>/<controller>/<action>',
로그인 후 복사restful的路由规则,在研究,日后再补~
suffix
设了.html
, 下面的rules都会用到,要想不用,需要在规则数组单独声明suffix=> ''
restful路由配置,
pluralize
参数默认为true,假如控制器为UserController
,要通过users
的url才能访问到,设为false的话,就不用加s,通过user
即可访问,如果控制器本来就是UsersController
,不管pluralize
如何配置,都是通过users
访问
Yii의 urlManager 구성 요소 구성 Notice
相关推荐:
위 내용은 Yii의 urlManager 구성 요소 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











제목: PyCharm에서 Git을 올바르게 구성하는 방법 현대 소프트웨어 개발에서 버전 제어 시스템은 매우 중요한 도구이며, 널리 사용되는 버전 제어 시스템 중 하나인 Git은 개발자에게 강력한 기능과 유연한 작업을 제공합니다. 강력한 Python 통합 개발 환경인 PyCharm은 Git을 지원하므로 개발자는 코드 버전을 보다 편리하게 관리할 수 있습니다. 이 기사에서는 개발 프로세스 중에 더 나은 개발을 촉진하기 위해 PyCharm에서 Git을 올바르게 구성하는 방법을 소개합니다.

제목: Linux 시스템에서 GDM의 작동 원리 및 구성 방법 Linux 운영 체제에서 GDM(GNOMEDisplayManager)은 그래픽 사용자 인터페이스(GUI) 로그인 및 사용자 세션 관리를 제어하는 데 사용되는 일반적인 디스플레이 관리자입니다. 이 기사에서는 GDM의 작동 원리와 구성 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. GDM의 작동 원리 GDM은 GNOME 데스크탑 환경의 디스플레이 관리자이며 X 서버를 시작하고 사용자에게 로그인 인터페이스를 제공합니다.

PyCharm은 강력한 통합 개발 환경(IDE)이고, PyTorch는 딥 러닝 분야에서 인기 있는 오픈 소스 프레임워크입니다. 머신러닝과 딥러닝 분야에서 PyCharm과 PyTorch를 개발에 활용하면 개발 효율성과 코드 품질을 크게 향상시킬 수 있습니다. 이 기사에서는 PyCharm에서 PyTorch를 설치 및 구성하는 방법을 자세히 소개하고 독자가 이 두 가지의 강력한 기능을 더 잘 활용할 수 있도록 특정 코드 예제를 첨부합니다. 1단계: PyCharm 및 Python 설치

Linux Bashrc 이해: 기능, 구성 및 사용법 Linux 시스템에서 Bashrc(BourneAgainShellruncommands)는 시스템 시작 시 자동으로 실행되는 다양한 명령과 설정이 포함된 매우 중요한 구성 파일입니다. Bashrc 파일은 일반적으로 사용자의 홈 디렉토리에 있으며 숨겨진 파일입니다. 해당 기능은 사용자를 위해 Bashshell 환경을 사용자 정의하는 것입니다. 1. Bashrc 기능 설정 환경

Win11에서 작업 그룹을 구성하는 방법 작업 그룹은 로컬 영역 네트워크에서 여러 컴퓨터를 연결하는 방법으로, 파일, 프린터 및 기타 리소스를 컴퓨터 간에 공유할 수 있습니다. Win11 시스템에서는 작업 그룹을 구성하는 것이 매우 간단합니다. 아래 단계를 따르십시오. 1단계: "설정" 애플리케이션을 엽니다. 먼저 Win11 시스템의 "시작" 버튼을 클릭한 다음 팝업 메뉴에서 "설정" 애플리케이션을 선택합니다. "Win+I" 단축키를 사용하여 "설정"을 열 수도 있습니다. 2단계: "시스템"을 선택하세요. 설정 앱에 여러 옵션이 표시됩니다. 시스템 설정 페이지로 들어가려면 "시스템" 옵션을 클릭하세요. 3단계: "정보"를 선택합니다. "시스템" 설정 페이지에 여러 하위 옵션이 표시됩니다. 클릭하세요

PyCharm은 일반적으로 사용되는 통합 개발 환경(IDE)입니다. 일상적인 개발에서는 Git을 사용하여 코드를 관리하는 것이 필수적입니다. 이 기사에서는 특정 코드 예제와 함께 PyCharm에서 Git을 구성하고 코드 관리를 위해 Git을 사용하는 방법을 소개합니다. 1단계: Git 설치 먼저 컴퓨터에 Git이 설치되어 있는지 확인하세요. 설치되어 있지 않은 경우 [Git 공식 홈페이지](https://git-scm.com/)에서 최신 버전의 Git을 다운로드하여 설치할 수 있습니다.

제목: Linux 시스템에서 FTPS를 구성하고 설치하는 방법에는 특정 코드 예제가 필요합니다. Linux 시스템에서 FTPS는 FTP와 비교하여 전송된 데이터를 TLS/SSL 프로토콜을 통해 암호화하므로 성능이 향상됩니다. 데이터 전송의 보안. 이 기사에서는 Linux 시스템에서 FTPS를 구성 및 설치하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1단계: vsftpd 설치 터미널을 열고 다음 명령을 입력하여 vsftpd를 설치합니다. sudo

Angular 프레임워크의 구성 요소에 대한 기본 표시 동작은 블록 수준 요소에 대한 것이 아닙니다. 이 디자인 선택은 구성 요소 스타일의 캡슐화를 촉진하고 개발자가 각 구성 요소가 표시되는 방법을 의식적으로 정의하도록 장려합니다. CSS 속성 표시를 명시적으로 설정하면 Angular 구성 요소의 표시를 완전히 제어하여 원하는 레이아웃과 응답성을 얻을 수 있습니다.
