Задать вопрос
Ответы пользователя по тегу Zend Framework
  • Как установить разные шаблоны для разных модулей в ZF2?

    Symbi0t
    @Symbi0t Автор вопроса
    Пардон. Уже разобрался.

    В конфигурационном файле определенного модуля (module.config.php) добавляем следующее:
    'view_manager' => array(
            'template_path_stack' => array(
                'lists' => __DIR__ . '/../view',
            ),
    	'template_map' => array(
                 'adminLayout'   =>  __DIR__ . '/../view/layout/layout.phtml',
            ),
        ),


    И в файле Module.php добавляем метод init(), предварительно не забыв подключить класс ModuleManager:
    use Zend\ModuleManager\ModuleManager;
    ....
    public function init(ModuleManager $moduleManager) {
            $sharedEvents = $moduleManager->getEventManager()->getSharedManager();
            $sharedEvents->attach(__NAMESPACE__, 'dispatch', function($e) {
                $controller = $e->getTarget();
                $controller->layout('adminLayout');
            }, 100);
        }


    Источник
    Ответ написан
    Комментировать
  • Как работать с двумя таблицами в Zend Framework 2?

    Symbi0t
    @Symbi0t Автор вопроса
    Нашел одно решение.
    В фабрике, при создании обертки, в конструктор класса (SomeTable) вторым аргументом передавать адаптер:
    'factories' => array(
                    'Some\Model\SomeTable' => function($sm)
                    {
    			$dbAdapter = $sm->get('adapter');
    			$tableGateway = new TableGateway('table', $dbAdapter);
    			$table = new SomeTable($tableGateway, $dbAdapter);
                            return $table;
    		},
            )

    Для того, чтобы в пределах этого класса была возможность создать отдельные sql-запросы.
    Получилось примерно следующее:
    namespace Some\Model;
    
    use Zend\Db\Sql\Sql;
    use Zend\Db\TableGateway\TableGateway;
    
    class SomeTable
    {
    	protected $dbAdapter;
    	protected $tableGateway;
    
    	public function __construct(TableGateway $tableGateway, $dbAdapter)
            {
                   $this->dbAdapter    = $dbAdapter;
                   $this->tableGateway = $tableGateway;
            }
    
            public function someAction()
            {
    	        $sql = new Sql($this->dbAdapter);
    		$select = $sql->select();
    		$select->from('another_table');
    		$select->where(array('id' => 1));
    
    		$statement = $sql->prepareStatementForSqlObject($select);
    		$results = $statement->execute();
    		
    		return ($results->count()) ? $results->current() : null;
             }
    }
    Ответ написан
    Комментировать