0

一部のデータを保存するコントローラーがあります。

$pat = $sm->get('Tables\PaymentAttemptsTable');
$pat->save($post);

モジュール構成には次の構成があります。

public function onBootstrap(EventInterface $e)
{
    $em  = $e->getApplication()->getEventManager();
    $em->attach('dispatch', array($this, 'loadConfiguration' ), 100);
}

public function loadConfiguration(EventInterface $e)
{
    $sm  = $e->getApplication()->getServiceManager();

    //if this module
    $exceptionstrategy = $sm->get('ViewManager')->getExceptionStrategy();
    $exceptionstrategy->setExceptionTemplate('error/inserterror');
}

PaymentAttemptsTable モジュール conf で、私はこのような同様の戦略を持っています。

public function onBootstrap(EventInterface $e)
{
    $eventManager        = $e->getApplication()->getEventManager();
    $eventManager->attach('dispatch', array($this, 'loadConfiguration' ), 100);
}

public function loadConfiguration(EventInterface $e)
{
    $sm  = $e->getApplication()->getServiceManager();

    //if this module
    $exceptionstrategy = $sm->get('ViewManager')->getExceptionStrategy();
    $exceptionstrategy->setExceptionTemplate('error/saveerror');
}

それぞれに、このようなビューconfがあります。

return array(

'view_manager' => array(
    'exception_template'       => 'error/index',
    'template_map' => array(
        'error/index'             => __DIR__ . '/../view/error/index.phtml',
    ),
    'template_path_stack' => array(
        __DIR__ . '/../view',
    ),
),

);

問題は、私がするときです

throw new SaveError('Table must be a string or instance of TableIdentifier.');

PaymentAttemptsTable クラスで、コントローラーからテンプレートを取得し、テーブル クラスを形成しません。これを修正する方法はありますか?

4

1 に答える 1

0

http://framework.zend.com/manual/2.0/en/modules/zend.view.quick-start.htmlの Controller and View Models セクションを見ると

さまざまなビュー テンプレートをロードする方法を示します。ビュー テンプレートを PaymentAttemptsTable クラスにロードする必要があるものに変更する必要があります。これは、呼び出し元のコントローラーで行う必要があります。

Zend.com の例

namespace Foo\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class BazBatController extends AbstractActionController
{
    public function doSomethingCrazyAction()
    {
        $view = new ViewModel(array(
            'message' => 'Hello world',
        ));
        $view->setTemplate('foo/baz-bat/do-something-crazy');
        return $view;
    }
}
于 2013-05-01T21:01:56.090 に答える