Zend_Layoutについて

このQ&Aのポイント
  • Zend_Layoutを使用する際にsidebar.phtmlで変数を出力する方法についての質問です。
  • IndexControllerの各アクションメソッドに$response->insert('sidebar', $this->view->render('表示したいファイル名.phtml'));と指定することで実現可能ですが、複数のファイルを作成するのは少し面倒です。
  • また、Zend_LayoutとSmartyのどちらを使用するかについての意見を聞きたいです。
回答を見る
  • ベストアンサー

Zend_Layoutについて

下記URLを参考にZend_Layoutを試しているのですが http://akrabat.com/tutorial/simple-zend_layout-example/ sidebar.phtmlで変数を出力する事ってできますでしょうか? 同フォルダのlayout.phtmlやscriptsフォルダのコンテンツを 表示するphtmlでは出力できるのですがこれだけ出力されない 状況です。 class IndexController extends Zend_Controller_Action { public function indexAction() { $this->view->list = '1'; } } それぞれのアクションメソッドに $response->insert('sidebar', $this->view->render('表示したいファイル名.phtml')); と指定してやればいい事ではあるのですが同様のファイルを複数 作成するのは微妙なので・・・ 例えば、sidebar.phtmlで展開し・・・ <ul> <? php if ($this->list == 1) : ?> <li>リスト1</li> <? else if ($this->list == 2) : ?> <li>リスト2</li> <? endif; ?> </ul> のような使用イメージです。 質問内容と若干ずれるのですが表示はZend_LayoutでするのとSmartyを 使うのとどちらがいいのでしょうか? 判断材料がなく困っているので参考までにご意見を伺えますと幸いです。

  • dcx147
  • お礼率33% (214/636)
  • PHP
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ちょっとアプローチとしては違うんですが、あるActionの後に、共通で動作するpostDispatchというメソッドがあります。 そこに記述してやってはどうでしょう。 class FooController extends Zend_Controller_Action{ public function indexAction(){ $this->view->test = "test!"; } public function postDispatch(){ $layout = $this->view->layout(); $layout->sidebar = $this->view->render('sidebar.phtml'); } } ---layoutファイル----- <body> <!--メインコンテンツの表示--> <?php echo $this->layout()->content?> <!--サイドバーの表示--> <?php echo $this->layout()->sidebar?> </body> といった感じにすれば、変数が渡されてると思います。

関連するQ&A

  • 半角文字を使用してリスト表示をするとレイアウトが崩れてしまう

    -------------------------------- //htmlコード <div id="hoge">  <ul>   <li>あああ</li>   <li>いいい</li>   <li>ううう</li>   <li>えええ</li>   <li>おおお</li>  </ul> </div> -------------------------------- //cssコード #hoge ul {     margin: 0px;     padding: 0px;     list-style-type: none;     width: 500px; } #hoge li {     width: 33%;     float: left; } --------------------------------- 上記コードで出力をすると以下のように出力されます。 あああ  いいい  ううう えええ  おおお しかし、例えばここで <li>いいい</li> に半角文字を使用して <li>いいいi</li> の様に変更すると あああ  いいいi  ううう              えええ おおお とレイアウトが崩れて表示されてしまいます。 Firefoxでは問題なく表示されますが、IEでこのような現象がおきてしまいます。 これはどういった原因が考えられるのでしょうか。

    • ベストアンサー
    • HTML
  • CSSIE7でレイアウトが崩れます(リストスタイル..)

    はじめまして ノブタです TAGの掲示板でもご質問いたしています。 急いでいますのでなりふり構わずすみません。 2コラム型(入れ子)のHP作成で 左側にメニュー項目を作成しました。 あらかじめCSSでlist-styleはnoneを指定いたしています。 作成過程で(Dreamweaver)上でもリストスタイルは表示されませんでした。 もちろんIE6でもレイアウトのズレも無くリストスタイルも無い状態で表示されていました。 しかし、IE7では(Dreamweaver)上でも作成過程からリストスタイルが表示されレイアウトが右に膨らみ崩れます。 初期化する意味でimportで読み込ませてみたり、*:first-child+html { }や アンダーバー_ を子セレクターを使用したり トライしてみるのですが上手く反映されません。 リストマークがIE7で現れ本当に困っていいます。 助けてください お願いいたします。 (基本的なCSSができていようで勘違いしています) ソースは以下のような感じですが..... 教えて頂けたら嬉しいのですが 宜しくお願いいたします。 /!------CSS------/ #menus{ float:left; margin-left:1px; margin-top:10px; margin-bottom:25px; margin-right:3px; width:162px; background-color: #FFFFFF; clear: both; list-style:none; display:block; } *:first-child+html #menus{ list-style:none; } /!--こんな感じで試しています。--/ UL#menus{ margin:35px 5px 0px 0px; width:162px; height:400px; background-color:#FFFFFF; clear:left; display:inline; list-style:none; _list-style:none;/!--こんな感じで試しています。--/ } ul menus { /* for IE7 */ list-style: none; }/!--こんな感じで試しています。--/ *:first-child+html ul#menus{ list-style:none; }/!--こんな感じで試しています。--/ UL#menus LI { clear: both; hight: 162px; list-style:none; list-style-position:inside; } ul menus li{ /* for IE7 */ list-style: none; }/!--こんな感じで試しています。--/ *:first-child+html ul#menus li{ list-style:none; } /!--こんな感じで試しています。--/ /!--*一回一回記述してみたり削除してみたり試しています。--/ /!-----以上がCSSです----/ htmlは <!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=shift_jis" /> <link rel="stylesheet" href="reset.css" type="text/css" media="all"> <link rel="stylesheet" type="text/css" HREF="CSS/details3000.css"> <!------////////        省略                   ////////////---> <div id="left"> <div id="menus"> <ul> <li id="menus01"> <li id="menus02"><a href=""></a></li> <li id="menus03"><a href=""></a></li> <li id="menus04"><a href=""></a></li> <li id="menus05"><a href=""></a></li> <li id="menus06"><a href=""></a></li> <li id="menus07"><a href=""></a></li> <li id="menus08"><a href=""></a></li> </ul> </div> <ul id="menus" > <LI> <img src="imges/leftmenus/sp002.gif" onmouseover="setRollOverImg(0, this)" onmouseout="setRollOverImg(1, this)" /></LI> <LI> <img src="imges/leftmenus/sp003.gif" width="162" height="30" onmouseover="setRollOverImg(2, this)" onmouseout="setRollOverImg(3, this)" /></LI> <!-----以上がソースです。------> リストマークが消えません 教えてください 宜しくお願いいたします。

  • セルとセルの間に余白を開けたレイアウトの作成方法

    添付のファイルのようなデザインをCSSでレイアウトする方法を教えてください。 自分では、リスト(<ul><li></li></ul>)を使う方法とtableを使う方法を試してみましたが、うまくできませんでした。 失敗した点を説明させていただきます。 【<ul><li></li></ul>で作成した場合】  ・タイトル部分(施設案内)の縦の高さが1行分で表示されるため、右の内容のセルと高さが揃わない。  ・縦の高さを強引に指定したとしても縦での中央揃えが出来なかった。 【tableで作成した場合】  ・セルとセルの間にborder-spacingを指定するが効かなかった。  ・セルの間隔は、タイトルと内容の間に1本と列ごとに1本いれたいが方法がわからない。 出来れば、リスト(<ul><li></li></ul>)で作成する方法を教えて欲しいです。 他にシンプルにできるオススメの方法がありましたらご教授お願いいたします。

    • ベストアンサー
    • CSS
  • 画像にリンクを張ったら、レイアウトが崩れました。

    ホームページを制作しているのですが、リストにして並べた画像にリンクを張ったら、レイアウトが崩れてしまいました。 まず、リンクを張らずにやってみました。 HTML部分 <ul id="main_center"> <li id="1"><img src="http://***.jpg" /></li> <li id="2"><img src="http://***.jpg" /></li> <li id="3"><img src="http://***.jpg" /></li> </ul> CSS部分 #main_center #1,#2,#3 { display: block; width: 220px; height: 20px; list-style-type: none; margin-bottom: 10px; } タグは以上の通りでやったところ、問題なく画像が綺麗に並んだのですが、 <ul id="main_center"> <li id="1"><a href="http://***/"><img src="http://***.jpg" /></a></li> <li id="2"><a href="http://***/"><img src="http://***.jpg" /></a></li> <li id="3"><a href="http://***/"><img src="http://***.jpg" /></a></li> </ul> といった感じで、画像にリンクさせたところ上下に余分なスペースが出来てしまいました。 リンクを張っただけで、レイアウトが崩れてしまうということはあるのでしょうか。 または、なにかタグが間違っているのでしょうか。 どなたかアドバイスをお願いいたします。

    • ベストアンサー
    • HTML
  • レイアウトが崩れてしまう原因を教えて下さい。

    添付データのようなデザインをtableを使わずに作りたいのですが、 テキスト数の増減やphotoのmarginをいじるとレイアウトが崩れてしまいます。 テキストが増えても減ってもレイアウトが崩れない方法はありますか? <style type="text/css"> .contents{ width: 650px; margin-right: auto; margin-left: auto; } .contents ul{ list-style: none; } .contents ul li.photo{ float: left; border: 1px solid #ccc; padding: 5px; } .contents ul li.text, .contents ul li.title{ margin-left: 200px; } .contents ul li.title{ margin-top: 20px; margin-bottom: 10px; color: #111; } .contents ul li.text{ font-size: 14px; } .contents ul li.photo a img{ border-style: none; outline: none; } .contents ul li.title a:hover{ color: #ccc; } </style> <div class="contents"> <ul> <li class="photo"><a href=""><img src="sample.jpg" alt="サンプル" width="150" height="100" /></a></li> <li class="title"><a href=""><u>これはサンプルです</u></a></li> <li class="text">テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</li> </ul> </div> <div class="contents"> <ul> <li class="photo"><a href=""><img src="sample.jpg" alt="サンプル" width="150" height="100" /></a></li> <li class="title"><a href=""><u>これはサンプルです</u></a></li> <li class="text">テキストテキストテキストテキストテキストテキスト</li> </ul> </div> <div class="contents"> <ul> <li class="photo"><a href=""><img src="sample.jpg" alt="サンプル" width="150" height="100" /></a></li> <li class="title"><a href=""><u>これはサンプルです</u></a></li> <li class="text">テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</li> </ul> </div>

    • ベストアンサー
    • HTML
  • jqueryにてIEでの不具合 each処理?

    cromeやfirefoxでは正常に動きますが、IEにて一部動いてくれない部分があり困っています。 おかしな点や原因など教えていただきたくご質問させていただきます。 <style> .that{color:red;} </style> <script type="text/javascript"> $(function(){ $('button').click(function(){ $('#list>ul').removeClass('that'); var val = $(this).text(); $('#list>ul li').each(function(){ if($(this).text() == val){ $(this).parent().addClass('that'); }; }); }); }); </script> html↓ <button>100</button> <button>200</button> <button>300</button> <div id="list"> <ul> <li>100</li><li>200</li> </ul> <ul> <li>300</li><li>200</li> </ul> </div> クリックしたボタンの数値があるULの色を変えるものです。 100と300をクリックした場合は正常に変わりますが、200をクリックした時に変わらなくなります。 <li>の中で最後に書かれている数値が効かなくなるようで、<li>の100と200を入れ替えると100が効かなくなります。(IEのみ) 原因等わかりましたらよろしくお願いいたします。

  • Zend Frameworkでoracle接続

    Zend Frameworkを勉強しようと思い始めたばかりのものです。 oracleに繋がらずどこをチェックすればよいのかさっぱりわかりません。 どなたかご教授願えないでしょうか? zfツールを使い雛形を作って、module で分けてみたり、ヘッダー、フッターをlayoutを使って分けたりと少し前進しました。 次はDB接続だと思い始めたのですが繋がりません。 ■環境 CentOS release 5.6 (Final) ■やったこと 1)oracle接続モジュール oci8 をインストール # export ORACLE_HOME=/opt/oracle/product/10.2.0/db # pecl install oci8 php.ini に追記 # vi /etc/php.ini extension=oci8.so 2)ローカルで接続テスト これは問題なく接続できてるみたいなのです。 # more test.php <?php putenv("ORACLE_HOME=/opt/oracle/product/10.2.0/db"); putenv("LD_LIBRARY_PATH=:/opt/oracle/product/10.2.0/db/lib"); // Zend_Dbライブラリの読み込み require_once 'Zend/Loader.php'; require_once 'Zend/Db.php'; $dbInit = array( 'host' => 'localhost', 'username' => 'usrxx', 'password' => 'usrxx', 'dbname' => 'xxdb' ); $db = Zend_Db::factory('oracle', $dbInit); $db->getConnection(); echo 'OK'; $db->closeConnection(); # php test.php OK 3)Zend Frameworkで接続テスト IndexController.php の indexAction でやってみたのですがダメなのです。 public function indexAction() { $dbInit = array( 'host' => 'localhost', 'username' => 'usrxx', 'password' => 'usrxx', 'dbname' => 'xxdb' ); $db = Zend_Db::factory('oracle', $dbInit); $db->getConnection(); $db->getConnection(); echo 'OK'; $db->closeConnection(); } ※/etc/sysconfig/httpdに以下を追加しました export ORACLE_HOME=/opt/oracle/product/10.2.0/db export LD_LIBRARY_PATH=/opt/oracle/product/10.2.0/db/lib 実行するとどうしてもエラーとなります。 ■エラーメッセージ An error occurred Application error Exception information: Message: Unknown exception Stack trace: #0 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Db/Adapter/Abstract.php(315): Zend_Db_Adapter_Oracle->_connect() #1 /home/www/zf/application/modules/default/controllers/IndexController.php(30): Zend_Db_Adapter_Abstract->getConnection() #2 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Controller/Action.php(516): IndexController->indexAction() #3 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('indexAction') #4 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #5 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch() #6 /home/www/zf/venders/ZendFramework-1.11.11/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() #7 /home/www/htdocs/shopping/necs/zf/index.php(29): Zend_Application->run() #8 {main} Request Parameters: array ( 'controller' => 'index', 'action' => 'index', 'module' => 'default', ) どこを確認すればよいかのサッパリわからず投稿させていただきました。 何卒よろしくお願いします。

    • 締切済み
    • PHP
  • Multi-level list での質問。

    htmlの初心者です。 今テキストを観ながら練習したら疑問に感じたのがあったので質問します。 シンプルなBULLETED listを使った例題で 例題1 <html> <head><title>Unordered Lists</title><head> <body> <ul> <li>This is the first item</li> <li>this is the second item</li> </ul> </body> </html> 例題2 (Multi-level list) 同じ例文を元に <html> <head><title>Unorderd Lists</title><head> <body> <ul> <li>This is the first item <ul> <li>This is a sub point</li> <li>This is another sub point</li> </ul></li> <li>This is the seond item <ul> <li>This is a sub point</li> <li>This is a another sub point</li> </ul></li> </body> </html> 最初に質問したいのが、例題1,2共通の質問。 <head><title>Unordered Lists</title><head>の 最後の<head>は、なぜ </head>ではないのか? 二つ目の質問は、 <ul> <li>This is the first item <ul> <li>This is a sub point</li> <li>This is another sub point</li> </ul></li> の最後の</li>。 違いが知りたくて</ul>だけで</li>なしの場合と 両方</ul></li>でやってみましたがbrowser上の表記は 同じでした。 multi-level のリストでは必ず</li>も忘れずつけなければ問題がでるのでしょうか。教えてください。

  • ZendFramework1.0.0RCの動作方法

    テスト的にコントローラー部で Zend::loadClass('Zend_Controller_Action'); Zend::loadClass('Zend_View'); という記述をしているのですが、 Fatal error: Class 'Zend' not found in C:\Program Files\Apache Group\Apache2\htdocs\controllers\IndexController.php on line 2 と言われてしまいます。 なんの設定ミスか分かるでしょうか? include_pathは、mod_rewriteによって飛ばされるindex.phpの1行目にset_include_path()を利用して設定しています。

    • 締切済み
    • PHP
  • CSSについて リスト表示のリストマークの表示位置

    カテゴリをリスト表示すると左揃いにならず、 なぜが左に余計な空白というか空間ができてしまいます。 リスト表示のリストマークの表示位置をもっと左にするにはどうすればいいですか? /* カテゴリー */ div#sidebar-left li {font-size: 0.75em; list-style-type: none; background-image: url(listmark.png); background-repeat: no-repeat; padding-left: 16px; margin-bottom: 4px; vertical-align: top} div#sidebar-left li a{color: #000000; text-decoration: none} div#sidebar ul{padding: 0; margin: 8px 8px 20px}

専門家に質問してみよう