链接到静态页面

时间:2013-01-30 18:17:37

标签: php yii

我是一个完整的Yii新手所以请原谅一个简单的问题。我一直在读各种帖子,找不到有用的东西。我所要做的就是设置一个Yii站点(我已经完成),然后使用我的Main布局链接到静态页面。

以下是我认为相关的三个文件:

  • index.php:我在主页上显示的视图作为主要布局的内容
  • terms_of_use.php:视图我试图出现在主要布局中失败
  • main.php:我的主布局

在主布局的页脚内,指向静态页面的链接为:

<a href="index.php?r=site/page&view=terms_of_use">Terms of Use</a>

当我点击它时,它会在浏览器地址栏中生成我认为正确的URL:

http://localhost/Company/index.php?r=site/page&view=terms_of_use

但显示的是index.php的内容,而不是terms_of_use.php。我正在使用默认的SiteController。 index.php有什么特别的东西,我不知道,还是我在做别的蠢事?谢谢你的帮助。

视图/站点/ index.php的:

<?php
/* @var $this SiteController */

$this->pageTitle=Yii::app()->name;
?>

<div id="content" class = "clearfix">
    <div class="threeColBlock">
        <div class="padded">
            <h2 class="pageTitle">Heading 1</h2>
                <p>Blurb 1</p>
        </div>
    </div>
    <div class="threeColBlock">
        <div class="padded">
            <h2 class="pageTitle">Heading 2</h2>
            <p>Blurb 2</p>
        </div>
    </div>
    <div class="threeColBlock">
        <div class="padded">
            <h2 class="pageTitle">Heading 3</h2>
            <p>Blurb 3</p>
        </div>
    </div>
</div>

视图/站点/页面/ terms_of_use.php:

<?php
/* @var $this SiteController */

$this->pageTitle=Yii::app()->name . ' - About';
$this->breadcrumbs=array(
    'About',
);
?>

<div id="content" class = "clearfix">
    <h2 class="pageTitle">Terms of Use</h2>
    <div class = "smallText">
        <p>
            Some legal junk
        </p>
    </div>
</div>

视图/布局/视图/ main.php:

<?php /* @var $this Controller */ ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="language" content="en" />

    <!-- blueprint CSS framework -->
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/screen.css" media="screen, projection" />
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/print.css" media="print" />
    <!--[if lt IE 8]>
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/ie.css" media="screen, projection" />
    <![endif]-->

    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/main.css" />
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/form.css" />
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/marketing.css">
    <link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/cssmenu.css" media="screen" />

    <title><?php echo CHtml::encode($this->pageTitle); ?></title>
</head>

<body>

    <div id="header"  class="clearfix">
        <div id="logo"><image src="images/logo,56x38,trans(white).gif"></div>
        <div id="logoName">Company</div>
        <div id="topRight">Bla bla bla</b></div>
    </div>

    <!-- Menu -->
    <div id='cssmenu'>
        <ul>
            <li class='active'><a href='dummy.com'><span>home</span></a></li>
            <li class='has-sub'><a href='#'><span>products</span></a>
                <ul>
                    <li><a href='dummy.com'><span>prod1</span></a></li>
                    <li><a href='dummy.com'><span>prod2</span></a></li>
                    <li class='last'><a href='dummy.com'><span>prod3</span></a></li>
                </ul>
            </li>
            <li><a href='dummy.com'><span>about</span></a></li>
            <li class='last'><a href='dummy.com'><span>contact</span></a></li>
        </ul>
    </div>

    <div id="mainImageContainer">
        <div id="mainImage">
            <image src = "images/main_image.jpg">
        </div>
    </div>

    <?php echo $content; ?>

</div><!-- page -->

    <div id="footer">
        Copyright &copy 2011 Company. All rights reserved. | <a href="index.php?r=site/page&view=terms_of_use">Terms of Use</a>
    </div>

</body>
</body>
</html>

3 个答案:

答案 0 :(得分:2)

找到它。我在config / main.php中启用了urlManager。如果我将原始链接更改为以下内容,那么我会得到我想要的内容。

http://localhost/Company/index.php/site/page/view/terms_of_use 

答案 1 :(得分:0)

关于您的具体问题,我相信您可能已经忘记了在默认站点控制器中覆盖actions()方法的步骤 - 尽管这引发了一个问题:您使用的是哪个版本的Yii框架?覆盖已包含在Yii 1.1.12中。

另外,根据yii wiki文章的评论:

  

如果您碰巧使用accessRules,请不要忘记添加“page”(或   无论你有什么名字,也允许采取行动。

http://www.yiiframework.com/wiki/22/how-to-display-static-pages-in-yii/是关于在Yii中使用静态页面的一篇很棒的文章,其中很大一部分是:

  

首先,在默认的SiteController(或其他控制器,如果你   比如),覆盖actions()方法如下,

public function actions()
{
    return array(
        'page'=>array(
            'class'=>'CViewAction',
        ),
    );
}
  

其次,创建一个文件夹protected / views / site / pages。

     

第三步,将每个静态页面保存为此文件夹下的PHP文件。对于   例如,我们可以将“关于此网站”页面保存为about.php。注意,   这些页面将使用应用程序的默认布局。因此,只有   主要内容需要保存在每个文件中。

     

我们完成了!为了访问静态页面,例如,关于页面,我们可以使用   以下网址:

http://www.example.com/index.php?r=site/page&view=about

答案 2 :(得分:0)

尽量不要对网址进行硬编码,而是使用createUrl之类的功能,(还有其他变种)。

当您对网址进行硬编码时,您可能会遇到问题,createUrl会考虑您的urlManager配置,并相应地生成网址,因此当您进行更改时,您无需转到每个视图并更改网址再次。

您可以像这样使用它:

<a href="<?php echo Yii::app()->createUrl('/site/page',array('view'=>'terms_of_use')); ?>">About</a>

或使用CHtml::link

echo CHtml::link('About',array('/site/page', 'view'=>'temrs_of_use'));