1

ZENDで作成しているWebサイトのメニューを作成しようとしています。私はZENDの初心者です。そこで、BlogCateogoriesControllerというコントローラーでアクションcatmenuAction()を作成しました。そのためのveiwスクリプトも作成しました。

現在master.phtmlファイルで、このビュースクリプトを呼び出してメニューをレンダリングしようとしています。実際、これが最新のニュース、コメント、ツイートを自分のページに表示する方法だと思います(Joomlaのlika MODULESのように)。

私のmaster.phtmlファイルで宣言しました

<?php $this->layout()->categoriesList = $this->action('catmenu', 'Blog_BlogCategories'); ?>

そして今、Blog_BlogCategoriesControllerが見つからないというこのひどいエラーが発生しています。

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (Blog_BlogCategories)' in D:\Server\xampp\htdocs\zendtest\library\Zend\Controller\Dispatcher\Standard.php:248 Stack trace: #0 D:\Server\xampp\htdocs\zendtest\library\Zend\View\Helper\Action.php(135): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 [internal function]: Zend_View_Helper_Action->action('catmenu', 'Blog_BlogCatego...') #2 D:\Server\xampp\htdocs\zendtest\library\Zend\View\Abstract.php(350): call_user_func_array(Array, Array) #3 [internal function]: Zend_View_Abstract->__call('action', Array) #4 D:\Server\xampp\htdocs\zendtest\application\layouts\master.phtml(20): Zend_View->action('catmenu', 'Blog_BlogCatego...') #5 D:\Server\xampp\htdocs\zendtest\library\Zend\View.php(108): include('D:\Server\xampp...') #6 D:\Server\xampp\htdocs\zendtest\library\Zend\View\Abstract.php(888): Zend_View->_run('D:\Server\xampp...') #7 D:\Ser in D:\Server\xampp\htdocs\zendtest\library\Zend\Controller\Plugin\Broker.php on line 336

助けてください!!!

4

2 に答える 2

3

Zend_View_Helper_Actionの構文は次のとおりです。

action( string $action, string $controller, string $module = null, array $params = array() ) : string

だからあなたが呼ぶところ:

$this->action('catmenu', 'Blog_BlogCategories');

'Blog'モジュールにクラスBlog_BlogCategoriesControllerがあると仮定します。電話する必要があります:

$this->action('catmenu', 'BlogCategories', 'Blog');

于 2012-09-06T01:10:13.850 に答える
2

私の理解に基づいて、以下のスクリプトを作成しようとしました。あなたは、どこにあるのか、そしてそれが問題とどのように関連しているかについて言及しなければならないmaster.phtmlファイルを使用しました。これらのhttp://framework.zend.com/manual/en/zend.tool.framework.clitool.html コマンドラインを使用して、プロジェクト、モジュール、コントローラー、レイアウトの順に作成します。

残りは以下で説明されます(そしてこれが役立つことを願っています)

applicaiton
  -config
  -controller
    -IndexController.php
  -forms
  -layouts
    -scripts
      -layout.phtml
  -models
  -modules
    -Blog
      -contollers
        -IndexController.php
        -CateogoriesController.php
      -models
      -views
        -helpers
    -scripts
      -error
      -index
        -index.phtml
          -cateogories
            -index.php
  -views
    -helpers
    -scripts
      -error
      -index
        -index.phtml
      -partials
        -menu.phtml
  -Bootstrap.php

layout / scripts / layout.phtml

<?php
$this->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
$this->headTitle($this->headtitle);
echo $this->doctype(); 
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<?php echo $this->headMeta(); ?>
<?php echo $this->headTitle(); ?>
<body>
<!-- loading menu -->
<?php echo $this->partial('partials/menu.phtml', 'default'); ?>
<?php echo $this->layout()->content; ?>
</body>
</html>

これはレイアウトスクリプトです。layout()-> contentは現在のビューファイルをロードするので、ここで何かを変更する必要はありません。デフォルトモジュールのビューにリンクする部分ビューと呼ばれています。

modules / Blog / controllers / CategorysController.php

<?php
class Blog_CateogoriesController extends Zend_Controller_Action
{
    public function init()
    {

    }
    //Default function
    public function indexAction()
    {
    }
}

これは、Blog_CateogoriesControllerクラスの基本構造です。

modules / Blog / views / scripts / category / index.phtml

<div class="menu"></div>
<div class="contant"></div>

基本的なページレイアウト

ビュー/スクリプト/partials/menu.phtml

<!-- menu -->
<ul> <li> </li> <ul>

メニューのhtmlコード

于 2012-09-06T00:55:59.100 に答える