Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

miqueiasrafael

Migrando sistema em PHP4 para PHP5 com Zend 2

Recommended Posts

Olá galera, estou com mais um desafio dessa vez migrar um sistema em php 4 para o php5 utilizando o Zend framework 2.

Gostaria de contar com a ajuda de todos!


Galera gostaria de mostrar o resultado desse script na view porém está dando erro:

 

namespace Application\Controller;

use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class IndexController extends AbstractActionController
{

public function indexAction()
{
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$canal = $this->dbAdapter->query('SELECT * FROM categoria ORDER BY id ASC', Adapter::QUERY_MODE_EXECUTE);


return new ViewModel(array('canal' => $canal));

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

que erro?

Na view escrevi

<?php foreach ($this->canal as $canal): ?>
<li><?php echo $canal->page; ?></li>
<?php endforeach; ?>
 

Ocorreu um erro An error occurred during execution; please try again later. Informação adicional: Zend\ServiceManager\Exception\ServiceNotFoundException Arquivo:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na indexAction, antes do return, dê um var_dump em $canal e veja qual é o valor dele. Talvez a própria conexão com o banco deu problema e nem chegou na view.

 

Beraldo apareceu o seguinte:

 

Fatal error: Call to a member function query() on a non-object in .../module/Application/src/Application/Controller/IndexController.php on line 24

Olha como fiz dentro do indexAction

 

namespace Application\Controller;

use Zend\ServiceManager\Exception\Service;
use Zend\Db\Adapter\Adapter;
use Zend\Db\ResultSet\ResultSet;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
//public dbAdapter()

public function indexAction()
{
$canal = $this->dbAdapter->query('SELECT * FROM categoria ORDER BY id ASC', Adapter::QUERY_MODE_EXECUTE);

var_dump($canal); die;
 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é por que $this->dbAdapter não é um objeto. A conexão deve ter falhado.

 

Dê uma var_dump em $this->dbAdapter, antes de chamar o método query. Veja também os dados de conexão com o banco. O problema pode estar lá

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é por que $this->dbAdapter não é um objeto. A conexão deve ter falhado.

 

Dê uma var_dump em $this->dbAdapter, antes de chamar o método query. Veja também os dados de conexão com o banco. O problema pode estar lá

olha o resultado : NULL

 

cheguei inclusive a criar dentro do BIN no Doctrine: doctrine_orm.global

 

Dentro do arquivo do doctrine:

 

 

<?php

return array(
'doctrine' => array(
'connection' => array(
'orm_default' => array(
'driveClass' => 'Doctrine\DBAL\Driver\PDOMysql\Driver',
'Params' => array(
//'host' => '127.0.0.1',
'host' => 'localhost',
'port' => '3306',
'user' => 'usuario',
'password' => 'xxxxxxxxx',
'dbname' => 'bd_teste,
'driverOptions' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
)
)
)
)
)
);
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não mexo nem com Zend 2 nem com Doctrine. Então não tenho como dar orientações mais específicas. Mas o problema está na conexão. Veja se os dados de conexão estão corretos, se a conexão está sendo executada e se o servidor MySQL está rodando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente um desses:

$this->getServiceLocator()->get('db');
$this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$this->getServiceLocator()->get('doctrine.entitymanager.orm_default');

Só por curiosidade, essa consulta não deveria estar no Model?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente um desses:

$this->getServiceLocator()->get('db');
$this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$this->getServiceLocator()->get('doctrine.entitymanager.orm_default');

Só por curiosidade, essa consulta não deveria estar no Model?

 

isso ficaria onde?

?????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você escreveu isso no seu próprio código.

Apenas tente usar os outros serviços, como sugerido pelo ExtremsX

 

Estava querendo dizer que fiz o código acima dentro do diretório /bin/doctrine_orm.global.php

 

Aí perguntei como chamo essa conexão!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só trocar um desses que enviei, pelo o que você pois no seu codigo (primeiro post você usa isso)

 

Cara fiz o var_dump assim:

<?php

namespace Application\Controller;

use Zend\View\Model\ViewModel;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\ServiceManager\Exception\Service;
use DoctrineModule\Authentication\Adapter;

use Zend\Db\Adapter\Driver;
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;

class IndexController extends AbstractActionController
{

public function indexAction()
{
var_dump($this->dbAdapter); die;
} 

E retornou NULL

 

isso ficaria onde?

?????

???

Compartilhar este post


Link para o post
Compartilhar em outros sites


namespace Application\Controller;

 

use Zend\Db\Adapter\Adapter;

use Zend\Db\ResultSet\ResultSet;

use Zend\Mvc\Controller\AbstractActionController;

use Zend\View\Model\ViewModel;

 

class IndexController extends AbstractActionController

{

 

public function indexAction()

{

$this->dbAdapter = É para trocar pelo que tinha aqui;

$canal = $this->dbAdapter->query('SELECT * FROM categoria ORDER BY id ASC', Adapter::QUERY_MODE_EXECUTE);

 

 

return new ViewModel(array('canal' => $canal));

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficou assim:

 

 

public function indexAction()
{
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$canal = $this->dbAdapter->query('SELECT * FROM categoria ORDER BY id ASC', Adapter::QUERY_MODE_EXECUTE);

return new ViewModel(array('categoria' => $canal));
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí galera gostaria de resolver esse problema do seguinte script, da mesma função acima!

 

class IndexController extends AbstractActionController
{
public function indexAction()
{
$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
$canal = $this->dbAdapter->query('SELECT * FROM categoria ORDER BY id ASC', Adapter::QUERY_MODE_EXECUTE);

return new ViewModel(array('categoria' => $canal));


// Post = Tipo do post
$PostUser = $this->dbAdapter->query('new_post.* FROM new_post, arquivos WHERE (new_post.post!="2" OR new_post.post!="3" OR new_post.post!="4") AND new_post.privado="no" AND arquivos.linha=new_post.id AND arquivos.tipo="images" AND arquivos.capa="1" AND arquivos.modulo="1178"', Adapter::QUERY_MODE_EXECUTE);

if (lerUrl() == NULL && $_SESSION['usuario'] == '') {
//$this->dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');

$b = 'false';

return new ViewModel(array('PostUser' => $PostUser));
}
}

Retornou o seguinte na tela

 

 

	Ocorreu um erro

	An error occurred during execution; please try again later.


	Informação adicional:

	Zend\ServiceManager\Exception\ServiceNotFoundException
 
.../vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php:529
 

	
		Mensagem:
	
		Zend\View\HelperPluginManager::get was unable to fetch or create an instance for PostUser

 

 

Como posso resolver?


Alguma dica?


???????

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.