목차
Yii의 urlManager 구성 요소 구성 컴포넌트에 대한 간단한 이해
Yii의 urlManager 구성 요소 구성  添加虚拟主机
3 各配置作用
4 rules配置
Yii의 urlManager 구성 요소 구성 Notice
백엔드 개발 PHP 튜토리얼 Yii의 urlManager 구성 요소 구성

Yii의 urlManager 구성 요소 구성

May 05, 2018 am 09:41 AM
구성 요소 구성

이 글에서는 주로 Yii의 urlManager 구성 요소를 소개하는데, 이는 특정 참조 값을 가지고 있습니다. 이제 필요한 친구들이 참조할 수 있습니다.

구성 구성 요소에는 주로 다음이 포함됩니다.

  • 지정된 클래스. 누락된 경우 기본 클래스

  • 속성을 사용하세요. 누락된 경우 기본 클래스의 해당 속성을 사용하세요

Yii의 urlManager 구성 요소 구성 컴포넌트에 대한 간단한 이해

urlManager는 클래스인데 왜 컴포넌트라고 부르나요? 지금은 걱정하지 마세요. 구성 요소에 대한 클래스를 지정해야 한다는 점만 알면 됩니다. 지정하지 않으면 구성 요소에 기본 클래스가 없으면 오류가 보고됩니다. 핵심 구성 요소입니다. B를 설치하고 yii 고급 템플릿을 예로 들어 보겠습니다.

Pis: 별도로 지정하지 않는 한 아래 경로는 네임스페이스가 아닌 파일의 특정 경로를 나타냅니다

    /frontend/web/index.php를 열고
    프런트엔드 항목 스크립트
    첫 번째 , Array Helper Class의 병합 메서드를 사용하여 배열을 재귀적으로 병합하고 마지막 배열은 이전 배열을 덮어써서 최종 구성을 가져옵니다. 그런 다음 구성 데이터를 Application의 생성자에 전달합니다. 를 선택한 다음 해당 실행 메서드를 실행합니다.
  1. /frontend/web/index.php,看到
    Yii의 urlManager 구성 요소 구성
    首先,用数组助手类的merge方法递归合并数组,后覆盖前得出最终配置,然后,将配置数据传到Application的构造方法里,再执行其run方法。

  2. 跳转到verdoryiisoftyiiYii의 urlManager 구성 요소 구성webApplication.php的run方法,它触发了很多事件,具体就不看了,貌似无关~,components相关东西在哪?搜索components,发现执行了coreComponents方法,其内容是
    Yii의 urlManager 구성 요소 구성
    并没有发现urlManager的默认类,并且各个配置文件都没为urlManager指定class,为什么没报错?因为它调用了父类的coreComponents方法。

  3. 跳转到verdoryiisoftyiiYii의 urlManager 구성 요소 구성baseApplication.php,原来urlManager组件在这里指定了类。
    Yii의 urlManager 구성 요소 구성

    我们已经知道是通过coreComponents指定核心组件的类了,但它是如何调用这个方法的呢?回头想想,在入口脚本还干了什么?实例化Application类时,自动调用构造方法!我们发现省略~webApplication没有覆盖父类的构造方法,即看父类的构造方法

    Yii의 urlManager 구성 요소 구성

  4. 跳转到preInit方法,在这个预初始化方法里,接受的参数是引用,即这个方法要对$config数组改造,重点看Yii의 urlManager 구성 요소 구성

    大概意思是,如果配置文件没有配置某组件或没有为某组件指定类,这个组件就用coreComponents指定的类。将$config变量构造好后,传到Component::__construct($config),开始组件的具体内容,就不往下走了。

  5. 下面看组件属性的配置,跳到/项目目录/frontend/config/main.php,我们看到urlManager组件配置被注释掉了,即意味着其使用了urlManager组件指定类的属性的默认值,具体在vendoryiisoftyiiYii의 urlManager 구성 요소 구성wbeUrlManager.php
    Yii의 urlManager 구성 요소 구성

    小结一下:组件配置,一指定类(无默认就要在配置文件写明),二配置属性,属性就是类的成员变量

Yii의 urlManager 구성 요소 구성  添加虚拟主机

为了方便,先给前台项目添加虚拟主机,具体看链接

<VirtualHost *:Yii의 urlManager 구성 요소 구성0>DocumentRoot "${INSTALL_DIR}/www/advanced/frontend/web/"ServerName frontend.advanced.com</VirtualHost>
로그인 후 복사

这步不是必须的~

3 各配置作用

以请求Site控制器的about动作为例子

  1. 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

  2. showScriptName

    完成后,才能通过http://frontend.advanced.com/site/about

    verdoryiisoftyiiYii의 urlManager 구성 요소 구성webApplication.php의 실행 메소드로 이동합니다. 많은 이벤트가 발생합니다. 자세한 내용은 살펴보지 않겠습니다~. 컴포넌트를 검색해 보니 coreComponents 메소드가 실행되었고 그 내용은

    urlManager의 기본 클래스를 찾을 수 없으며 각 구성 파일에서 urlManager에 대한 클래스를 지정하지 않았습니다. 왜 오류가 발생하지 않았습니까? 보고됐나요? 상위 클래스의 coreComponents 메서드를 호출하기 때문입니다. 🎜🎜🎜🎜 verdoryiisoftyiiYii의 urlManager 구성 요소 구성baseApplication.php로 이동하세요. urlManager 구성 요소가 여기에서 클래스를 지정하는 것으로 나타났습니다.
    Yii의 urlManager 구성 요소 구성🎜🎜우리는 핵심 구성 요소 클래스가 coreComponents를 통해 지정된다는 것을 알고 있는데 이 메서드를 어떻게 호출합니까? 돌이켜보면, 참가 스크립트에서 또 무엇을 했나요? Application 클래스를 인스턴스화하면 생성자가 자동으로 호출됩니다! ~webApplication 생략이 상위 클래스의 구성 방법을 다루지 않는다는 것을 발견했습니다. 즉, 상위 클래스의 구성 방법을 살펴보세요🎜🎜Yii의 urlManager 구성 요소 구성🎜🎜🎜🎜 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에서 클래스 속성의 기본값을 지정합니다.
    구성 파일의 URL 관리자🎜 🎜🎜요약하자면: 구성요소 구성은 먼저 클래스를 지정하고(기본값이 없으면 구성 파일에 명시해야 함), 두 번째 구성 속성, 속성은 클래스의 멤버 변수🎜🎜🎜
🎜 Yii의 urlManager 구성 요소 구성 가상 호스트 추가🎜🎜 편의를 위해 먼저 프런트엔드 프로젝트에 가상 호스트를 추가하고 자세한 내용은 링크를 참조하세요🎜
RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . index.php
로그인 후 복사
로그인 후 복사
🎜🎜이 단계는 필요하지 않습니다~🎜🎜🎜3 각 구성 기능🎜🎜은 < code>Site 컨트롤러의 aboutAction을 예로 들어🎜🎜🎜🎜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提示找不到页面
    Yii의 urlManager 구성 요소 구성这意味着,apache服务器找不到url请求的文件,按apache理解,省略~/web/下没有site目录,所以,想要实现隐藏入口脚本,还要在/frontend/web/下添加.htaccess文件,官方文档介绍,具体步骤如下:

    RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . index.php
    로그인 후 복사
    로그인 후 복사
  1. .htaccess添加内容如下,意思是,如果请求的文件或目录找不到,就转到index.php

  • enableStrictParsing

    • false [默认]:不启用严格解析路由,意思是,如果请求url与所有rules规则都不匹配的话,就按照默认的路由处理方式来处理,即按[模块/]控制器/动作,方式去解析url。

    • true:设为true后,当请求url与rules规则不匹配,就报错。

      如,通过http://frontend.advanced.com/site/about请求,得到Yii框架的报错提示
      Yii의 urlManager 구성 요소 구성

      这意味着,请求经过apache的转发,已经找到目的文件(入口脚本),目的文件运行过程中,没有得到期望参数(没传或验证不通过),因此Yii框架抛异常了

      注意与上面apache提示找不到页面区分~

  • suffix: 后缀名,如设置为suffix => &#39;.html,需通过http://frontend.advanced.com/site/about.html才能访问到

  • rules: 规则的配置就很复杂了,下面详讲。

  • 4 rules配置

    1. 想访问Siteabout动作,要在rules里加

      &#39;site/about&#39; => &#39;site/about&#39;
      로그인 후 복사

      其中,左边称为pattern,对应输入的url,右边为route,对应[模型/]控制器/动作。

    2. 如果不想为每个动作都加一个规则,可以这样

      &#39;<controller:\w+>/<action:\w+>&#39; => &#39;<controller>/<action>&#39;,
      로그인 후 복사

      可以这样理解,左边,接收请求url的对应值,对它们作\w验证,即必须是字母或数字或下划线,以/site/about为例,验证通过,赋值给临时变量controller,action,右边使用,从而找到Site控制器的about动作。

    3. 同理,模块下的控制器动作也可以这样实现

      &#39;<module:\w+>/<controller:\w+>/<action:\w+>&#39; => &#39;<module>/<controller>/<action>&#39;,
      로그인 후 복사
    4. restful的路由规则,在研究,日后再补~

    5. Yii의 urlManager 구성 요소 구성 Notice

      • suffix 设了.html, 下面的rules都会用到,要想不用,需要在规则数组单独声明suffix=> ''

      • restful路由配置,pluralize参数默认为true,假如控制器为UserController,要通过users的url才能访问到,设为false的话,就不用加s,通过user即可访问,如果控制器本来就是UsersController,不管pluralize如何配置,都是通过users访问

      相关推荐:

      yii的CURD操作

      위 내용은 Yii의 urlManager 구성 요소 구성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    Video Face Swap

    Video Face Swap

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

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

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

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

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

    PyCharm에서 Git 구성을 설정하는 방법 PyCharm에서 Git 구성을 설정하는 방법 Feb 20, 2024 am 09:47 AM

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

    Linux 시스템에서 GDM의 작동 원리 및 구성 방법 Linux 시스템에서 GDM의 작동 원리 및 구성 방법 Mar 01, 2024 pm 06:36 PM

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

    PyCharm과 PyTorch의 완벽한 조합: 자세한 설치 및 구성 단계 PyCharm과 PyTorch의 완벽한 조합: 자세한 설치 및 구성 단계 Feb 21, 2024 pm 12:00 PM

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

    Linux Bashrc 이해: 기능, 구성 및 사용법 Linux Bashrc 이해: 기능, 구성 및 사용법 Mar 20, 2024 pm 03:30 PM

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

    win11 시스템에서 작업 그룹을 구성하는 방법 win11 시스템에서 작업 그룹을 구성하는 방법 Feb 22, 2024 pm 09:50 PM

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

    간단하고 이해하기 쉬운 PyCharm 구성 Git 튜토리얼 간단하고 이해하기 쉬운 PyCharm 구성 Git 튜토리얼 Feb 20, 2024 am 08:28 AM

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

    Linux 시스템에서 FTPS를 구성하고 설치하는 방법 Linux 시스템에서 FTPS를 구성하고 설치하는 방법 Mar 20, 2024 pm 02:03 PM

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

    Angular 구성 요소 및 해당 표시 속성: 비블록 기본값 이해 Angular 구성 요소 및 해당 표시 속성: 비블록 기본값 이해 Mar 15, 2024 pm 04:51 PM

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

    See all articles