2

私はzendフレームワークのレイアウトを使用しています。今のようにそれはたくさんのコードで醜いように見えます。以下のコードを参考にして知りたいのですが。私がそれにもっとクリーンなアプローチを与えることは可能ですか?これが私のコードです。

<!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">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
        <title>Administrative Panel</title>
        <link href="/css/main.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="/js/jquery.min.js"></script>
        <script type="text/javascript" src="/js/plugins/spinner/ui.spinner.js"></script>
        <script type="text/javascript" src="/js/plugins/spinner/jquery.mousewheel.js"></script>
        <script type="text/javascript" src="/js/jquery-ui.min.js"></script>
        <script type="text/javascript" src="/js/plugins/forms/uniform.js"></script>
        <script type="text/javascript" src="/js/custom.js"></script>
    </head>
    <body>
        <!-- Left side content -->
        <div id="leftSide">
            <div class="logo"><a href="<?php echo $this->url(array(), 'admin-dashboard'); ?>"><img src="/images/logo.png" alt="" /></a></div>
            <!-- Divider Decorator -->
            <div class="sidebarSep mt0"></div>
            <!-- Search widget -->
            <form action="" class="sidebarSearch">
                <input type="text" name="search" placeholder="search…" id="ac" />
                <input type="submit" value="" />
            </form>
            <!-- Divider Decorator -->
            <div class="sidebarSep"></div>
            <!-- Statistics -->
            <div class="numStats">
                <ul>
                    <li><?php echo $this->itemCount; ?><span>Items</span></li>
                    <li><?php echo $this->categoryCount; ?><span>Categories</span></li>
                    <li class="last"><?php echo $this->userCount; ?><span>Users</span></li>
                </ul>
                <div class="clear"></div>
            </div>
            <!-- Divicer Decorator -->
            <div class="sidebarSep"></div>
            <!-- Sidebar buttons -->
            <a href="#" title="" class="sButton sBlue"><img src="/images/icons/sPlus.png" alt="" /><span>Add new item</span></a>
            <a href="#" title="" class="sButton sRed" style="margin-top: 12px;"><img src="/images/icons/sPlus.png" alt="" /><span>Add new user</span></a>
            <!-- Divider Decorator -->
            <div class="sidebarSep"></div>
            <!-- Left navigation -->
            <?php $this->navigation()->menu()->setPartial(array('partials/sidebar.phtml', 'admin')); echo $this->navigation()->menu()->render(); ?>
        </div>
        <!-- Right side -->
        <div id="rightSide">
            <!-- Top fixed navigation -->
            <?php echo $this->render('topnav.phtml') ?>
            <!-- Title area --> 
            <div class="titleArea"></div>
            <!-- Action Navigation -->
            <?php echo $this->placeholder('action-navigation'); ?>
            <!-- Main content wrapper -->
            <div class="wrapper">
                <?php echo $this->layout()->content ?>
            </div>
            <!-- Footer line -->
            <?php echo $this->render('footer.phtml') ?>
        </div>
        <div class="clear"></div>
    </body>
</html>

私は何度も見てきましたが、ほとんどの人はいくつかのヘルパーメソッドを使用してレイアウトファイルをクリーンアップしています。zendフレームワークの非常に独自の例から

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <?php echo $this->headTitle() ?>
    <?php echo $this->headScript() ?>
    <?php echo $this->headStyle() ?>
</head>
<body>
    <?php echo $this->render('header.phtml') ?>

    <div id="nav"><?php echo $this->placeholder('nav') ?></div>

    <div id="content"><?php echo $this->layout()->content ?></div>

    <?php echo $this->render('footer.phtml') ?>
</body>
</html>

彼らはのようないくつかのヘルパーメソッドを使用します

$this->docType()
$this->headTitle()
$this->headScript()
$this->headStyle()

このアプローチは、私にははるかにクリーンに見えます。彼らは同じドキュメントでこれについてあまり語っていないので。そのヘルパーメソッドの正確な目的は何だろうと思っていました。レイアウトファイルでどのように利用できますか?

4

2 に答える 2

4

ビューヘルパーとプレースホルダーについて必要なすべてがマニュアルにあります。特に、プレースホルダーの具体的な実装に関するこのセクションにあります。

独自のビューヘルパーを作成するには、マニュアルのこのセクションを参照してください。echo $this->myViewHelperName();カスタムビューヘルパーを使用すると、基本的に、レイアウトまたはこのコンテンツが必要な任意のビューで使用して、HTMLでコンテンツをレンダリングできます。

于 2012-04-12T14:53:22.980 に答える
2

私が使用している最も便利なレイアウトビューヘルパーは、スタイルとjavascriptアセットを管理するためのヘルパーです。

$this->headScript()
$this->headStyle()

基本的に、これらのヘルパーを使用すると、次のコマンドを呼び出すことで、任意のビューまたはレイアウトからスタイルシートとJavaScriptアセットを管理できます。

$this->headLink()->prependStylesheet($this->baseUrl('/media/css/shared.css'));

また

$this->headScript()->prependFile('https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js');

アプリケーション内のすべてのモジュールに特定のスタイルシートがある場合、これは非常に便利です。prependStylesheet別のビューから/を呼び出すことができprependFile、レイアウトの最後のエコー呼び出しにより、ロードしたファイルが出力されます。

htmlヘッドタグを印刷するには、レイアウト例と同じコードを使用します。

<?php echo $this->headScript() ?>
<?php echo $this->headStyle() ?>

スタイルシートを付加する関数とスタイルシートを付加する関数があることに注意してください。

$this->headLink()->prependStylesheet($this->baseUrl('/media/css/shared.css'));
$this->headLink()->appendStylesheet($this->baseUrl('/media/css/shared.css'));

スタイルシートをロードする順序によって、アセットの順序が決まります。通常、他のプラグインの前にjquery javascriptアセットをロードする必要があるため、これは特に重要です。

私は同意します、ZFのマニュアルはこれらのヘルパーの使用法についてほとんど言及していません。(http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.headstyle)

于 2012-04-12T15:13:36.080 に答える