我有一个保存一些数据的控制器。
$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类上的我从控制器获取模板而不是表格类,有没有办法解决这个问题?
答案 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;
}
}