2012-04-12 10 views
2

私はzendフレームワークのレイアウトを使用しています。あたかもあたかもあたかもたくさんのコードで醜いように見えます。私は以下のコードを参照して知りたいです。私にそれをよりきれいなアプローチにすることは可能ですか?ここに私のコードです。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 Frameworkに

<!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

プレースホルダの具体的な実装については、ヘルプヘルパーとプレースホルダについての詳細は、マニュアルのthis sectionを参照してください。

this section of the manualを参照して、独自のビューヘルパーを作成してください。カスタムビューヘルパーは、基本的にはレイアウト内のecho $this->myViewHelperName();またはこのコンテンツが必要なビューを使用して、HTMLでいくつかのコンテンツをレンダリングすることを許可します。私が使用している

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を別のビューから呼び出すことができ、レイアウト内の最後のエコーコールによって、ロードしたファイルが印刷されます。

:スタイルシートを追加し、スタイルシート機能を付加機能があります

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

注意があります。

を使用すると、例のレイアウトを持っている同じコードを使用して、HTMLのheadタグを印刷するには

$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)