>  기사  >  PHP 프레임워크  >  Yii 구현이 레이아웃 파일을 로드하지 않습니다.

Yii 구현이 레이아웃 파일을 로드하지 않습니다.

王林
王林원래의
2019-12-24 14:00:532519검색

Yii 구현이 레이아웃 파일을 로드하지 않습니다.

Yii 프레임워크는 템플릿을 렌더링할 때 기본적으로 레이아웃을 렌더링합니다. 새로 생성된 프로젝트에는 main.php, column1.php, column2.php, 공용 컨트롤러 Controller.php가 기본적으로 (구성 요소 디렉터리에) 생성되고 기본 SiteController.php는 다음과 같습니다. 상속됨 이 Controller.php, 이 컨트롤러는 레이아웃 파일을 column1.php로 지정합니다. main.phpcolumn1.phpcolumn2.php,并且默认创建了一个公共控制器Controller.php(在components目录下),默认的SiteController.php是继承的这个Controller.php,这个控制器指定了布局文件为column1.php。 

首先让我们看看渲染一个模板需要经过哪些步骤:

1、控制器中通过 $this->render('index')来开始渲染index.php视图文件;

2、在渲染index时,首先将index.php中的php脚本解析完毕,然后将解析的结果保存到$content变量里;

3、系统检查是否指定布局文件,先找控制器的$this->layout属性,如果这个值不为空的话,则再render()渲染这个布局文件,将$content值作为布局文件中的变量,也就是在布局文件中使用b8cb21d4be6121876b9b5e4bbf1ecc1f即可输出index.php里解析好的内容,而这个layout在Controller中默认指定为了column1.php,在这个布局里,又嵌套了项目默认的布局文件main.php。

4、如果控制器没有指定layout属性,则会去找项目配置中的layout属性,也就是main.php中的layout属性,而这个属性不需要人工指定,默认就是views/layouts/main.php文件。通过render解析这个布局文件,将index.php的内容作为$content变量穿进去。 

也就是说,按照默认情况,我们渲染一个视图需要渲染3个文件,分别是index.phpcolumn1.phpmain.php。 

对于不习惯布局模式的人来说,这无疑增加了麻烦。 

关闭方法:

不过关闭布局模式很简单,你可以将Controller中的 layout属性设置为false

먼저 템플릿을 렌더링하는 데 필요한 단계를 살펴보겠습니다.

1. 컨트롤러에서 $this->render('index')로 시작하세요. index.php 보기 파일 렌더링

2. index를 렌더링할 때 먼저 index.php에서 php 스크립트를 구문 분석한 다음 구문 분석된 결과를 $contentIn에 저장합니다.

3. 시스템은 먼저 컨트롤러의 $this->layout 속성을 ​​찾습니다. render( )이 레이아웃 파일을 렌더링하고 $content 값을 레이아웃 파일의 변수로 사용합니다. 즉, b8cb21d4be6121876b9b5e4bbf1ecc1f 는 index.php에 구문 분석된 내용을 출력할 수 있으며, 이 레이아웃은 <code>Controller에서 기본적으로 column1.php로 지정됩니다. 중첩되어 있습니다. 프로젝트 기본 레이아웃 파일인 main.php가 설치되어 있습니다. 🎜🎜4. 컨트롤러가 레이아웃 속성을 지정하지 않으면 main.php의 레이아웃 속성인 프로젝트 구성에서 레이아웃 속성을 찾습니다. 수동으로 지정됩니다. 기본값은 views/layouts/main.php 파일입니다. render를 통해 이 레이아웃 파일을 구문 분석하고 index.php의 내용을 $content 변수에 전달합니다. 🎜🎜즉, 기본적으로 뷰를 렌더링하려면 세 개의 파일, 즉 index.php, column1.phpmain.php를 렌더링해야 합니다. . 🎜🎜레이아웃 모드에 익숙하지 않은 사람들에게는 의심할 여지없이 문제가 증가할 것입니다. 🎜🎜닫기 방법:🎜🎜하지만 레이아웃 모드를 끄는 것은 매우 간단합니다. Controllerlayout 속성을 ​​false로 설정할 수 있습니다. 그렇습니다. 🎜🎜예는 다음과 같습니다: 🎜<pre class="brush:php;toolbar:false">SiteController extends Controller{ public $layout=false; //重写这个属性就可以了 //其他方法 }</pre>🎜추천 관련 기사 및 튜토리얼: 🎜yii tutorial🎜🎜

위 내용은 Yii 구현이 레이아웃 파일을 로드하지 않습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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