2

私は完全なYii初心者なので、簡単な質問はご容赦ください。私はさまざまな投稿を読んでいますが、うまくいくものが見つかりません。私がやろうとしているのは、Yiiサイト(私がやったこと)をセットアップしてから、メインレイアウトを使用して静的ページにリンクすることだけです。

以下は、私が関連すると思う3つのファイルです。

  • 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

ただし、表示されるのは、terms_of_use.phpではなく、index.phpのコンテンツです。デフォルトのSiteControllerを使用しています。私が知らないindex.phpについて何か特別なことはありますか、それとも私は何か他の愚かなことをしていますか?助けてくれてありがとう。

views / site / 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>

views / layouts / views / 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>
4

3 に答える 3

2

それを見つけた。config/main.phpでurlManagerを有効にしました。元のリンクを次のリンクに変更すると、必要なものが得られます。

http://localhost/Company/index.php/site/page/view/terms_of_use 
于 2013-01-30T19:05:30.497 に答える
0

あなたの特定の質問に関して、あなたはデフォルトのサイトコントローラーでメソッドをオーバーライドするステップを忘れているかもしれないと思いますactions()-それは質問を提起します:あなたはどのバージョンのYiiフレームワークを使用していますか?オーバーライドはすでにYii1.1.12に含まれています。

また、そのyii wiki記事へのコメントによると:

accessRulesを使用する場合は、許可されたアクションにも「ページ」(または任意の名前)を追加することを忘れないでください。

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フォルダーを作成します。

3番目に、各静的ページをこのフォルダーの下にPHPファイルとして保存します。たとえば、「このサイトについて」ページをabout.phpとして保存できます。これらのページは、アプリケーションのデフォルトのレイアウトを使用することに注意してください。したがって、各ファイルに保存する必要があるのはメインコンテンツのみです。

完了です!アバウトページなどの静的ページにアクセスするには、次のURLを使用できます。

http://www.example.com/index.php?r=site/page&view=about
于 2013-01-30T18:22:45.990 に答える
0

URLをハードコーディングしないようにしてください。代わりに、などの関数を使用してくださいcreateUrl(他にもバリエーションがあります)。

URLをハードコーディングすると、発生する可能性のある問題が発生し、createUrlurlManager構成が考慮され、それに応じてURLが生成されるため、変更を加えるときに、すべてのビューに移動してURLを再度変更する必要はありません。

あなたはそれを次のように使うことができます:

<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'));
于 2013-01-31T03:48:21.467 に答える