2017-10-28 13 views
1

私はlayout.phtmlにデータベース値を "挿入"するためのビューヘルパーを作成しようとしています。これは単純な文字列を使用した結果ですが、テーブルゲートウェイを呼び出すと、それは結果ではなく、他のHTMLをロードしません。ZF2 - getServiceLocatorでカスタムビューヘルパーがロードされない

//Conversa/src/View/Helper/Conversas.php

namespace Conversa\View\Helper; 

use Conversa\Model\ConversaTable; 
use Zend\View\Helper\AbstractHelper; 

class Conversas extends AbstractHelper 
{ 

    protected $sm; 
    protected $mensagemTable; 
    protected $conversaTable; 

    public function __construct($sm) 
    { 
     $this->sm = $sm; 
    } 

    public function __invoke() 
    { 
     $id = $_SESSION['id_utilizador']; 

     //$conversas = $this->getConversaTable()->conversasUtilizadorAll($id); 
     //$conversaTable = new ConversaTable(); 

     $c = $this->getConversaTable()->fetchAll(); // <-When I call this, it doesn't work anymore 

     $output = sprintf("I have seen 'The Jerk' %d time(s).", $this->conversaTable); 
     return htmlspecialchars($output, ENT_QUOTES, 'UTF-8'); 
    } 

    public function getConversaTable() 
    { 
     if (!$this->conversaTable) { 
      $sm = $this->getServiceLocator(); 
      $this->conversaTable = $sm->get('Conversa\Model\ConversaTable'); 
     } 
     return $this->conversaTable; 
    } 

    public function getMensagemTable() 
    { 
     if (!$this->mensagemTable) { 
      $sm = $this->getServiceLocator(); 
      $this->mensagemTable = $sm->get('Mensagem\Model\MensagemTable'); 
     } 
     return $this->mensagemTable; 
    } 
} 

Module.php

public function getViewHelperConfig() 
{ 
    return array(
     'factories' => array(
      'conversas' => function ($sm) { 
       $helper = new View\Helper\Conversas; 
       return $helper; 
      } 

     ) 
    ); 
} 

答えて

1

ないあなたがに関するすべての情報が含まれていませんでしたので、ここに行くために多くのどのような(エラーメッセージ?)が発生しますが、ビューヘルパーファクトリは正しく表示されません。あなたのビューヘルパーのコンストラクタメソッドは、サービスマネージャのための必須の引数を持っているので、あなたはそれを渡す必要があります:あなたのビューヘルパーがconversaTableを必要とするため

public function getViewHelperConfig() 
{ 
    return array(
     'factories' => array(
      'conversas' => function ($sm) { 
       $helper = new View\Helper\Conversas($sm); 
       return $helper; 
      } 
     ) 
    ); 
} 

また、ビューヘルパーの代わりにそれを渡すために良いかもしれませんサービスマネージャー(あなたが依存しているサービスロケーター機能がZF3で削除されました)。

関連する問題