查看模块异常策略

时间:2013-05-01 19:47:44

标签: zend-framework2

我有一个保存一些数据的控制器。

$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模块上我有类似的策略。

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');
}

在每一个上我都有这样的看法。

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类上的

我从控制器获取模板而不是表格类,有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果你看一下控制器和视图模型部分 http://framework.zend.com/manual/2.0/en/modules/zend.view.quick-start.html

它向您展示了如何加载不同的视图模板,您需要做的是将视图模板更改为需要在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;
    }
}