#php #zend-framework
#php #zend-framework
Вопрос:
Я новичок в Zend и работаю над проектом, который требует трех контекстов для определенного действия. Существует стандартный контекст, который обычно используется, контекст AJAX для вызовов AJAX и, наконец, контекст, удобный для печати. Цель состоит в том, чтобы у каждого из них было свое собственное представление, поэтому используемые файлы просмотра были бы чем-то вроде:
/action_name.phtml /action_name.ajax.phtml /action_name.print.phtml
Я прочитал http://framework.zend.com/manual/en/zend.controller.actionhelpers.html и придумал:
public function init()
{
// add any necessary context switching here
$contextSwitch = $this->_helper->getHelper('AjaxContext');
$contextSwitch->addActionContext('history', 'html')
->initContext();
//need to add another context for the print view
$this->_helper->getHelper('contextSwitch')->addActionContext('history','print')->initContext();
}
Я убежден, что первые две строки работают, но я не уверен, правильно ли я использую контекст печати, поскольку в примерах вторым параметром обычно является тип файла, такой как JSON, XML, HTML и т.д. Правильно ли я поступаю или есть что-то еще, что я должен делать?
Ответ №1:
Все это есть в документации. Если вам нужны пользовательские контексты, вы должны сначала добавить их:
$this->_helper
->getHelper('contextSwitch')
->addContext('print', array(
// context options go here
))
->addActionContext('history', 'print')
// more addActionContext()s goes here
->initContext();
Ответ №2:
Что вы могли бы сделать вместо использования контекста для представления печати, так это просто указать параметр в URL, подобный /print/1
. Затем в действии контроллера проверьте, имеет ли этот параметр значение true, и если это так, отобразите сценарий просмотра «печать» вместо обычного сценария просмотра.