Magento: conflito de rotas entre frontend e admin

Hoje eu estava trabalhando num bug de um módulo de terceiros. Algo simples, o botão do adicionar ao carrinho fazia seu trabalho por AJAX, ao invés do tradicional POST. Entretanto, toda vez que eu chamava a URL http://.../ajaxcart/cart/add, eu recebia um HTTP status 302, ou seja, um redirecionamento, para a mesma URL, porém em modo seguro (HTTPS). Depois de um processo de debug, constatei que o controller não era chamado quando era feita a requisição, portanto o problema deveria estar em alguma configuração do Magento. E de fato, estava. O painel administrativo estava configurado para utilizar o HTTPS (Configurações > Geral > Web > Seguro > Usar SSL no Admin), e quando eu removia esta opção, tudo funcionava conforme o esperado. ...

junho 6, 2014

Twig_Error_Syntax: A message inside a trans tag must be a simple text

Dica rápida: Quando você tiver um código deste tipo: {% raw %}{% trans %}prefix.{{ varname }}{% endtrans %}{% endraw %} E receber esta mensagem de erro: Twig_Error_Syntax: A message inside a trans tag must be a simple text Você pode usar o código abaixo como gambiarra alternativa. {% raw %}{{ ("prefix." ~ varname)|trans }}{% endraw %} PS: é possível que esta não seja a melhor maneira de resolver.

janeiro 15, 2014

Symfony 2: alternativa para usar heranças com UniqueEntity

Olá, Hoje eu me deparei com um bug conhecido do Symfony2 ao usar UniqueEntity e herança com entidades. Na discussão, @gentisaliu recomendou usar um repositório customizado, então estou documentando a solução abaixo: Entidades: /** * @ORM\Table(name="parent") * @ORM\Entity(repositoryClass="Repository\Parent") * @UniqueEntity(fields={"name"}, repositoryMethod="findByName", message="Name already used.") * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="type", type="string") * @ORM\DiscriminatorMap({ * "a" = "ChildA", * "b" = "ChildB" * }) */ class Parent { } /** * @ORM\Entity(repositoryClass="Repository\Parent") * @ORM\Table(name="child_a") */ class ChildA extends Parent { } /** * @ORM\Entity(repositoryClass="Repository\Parent") * @ORM\Table(name="child_b") */ class ChildB extends Parent { } repositoryMethod: ...

novembro 27, 2013

Objeto produto do Magento e o método loadByAttribute

Olá, Abaixo uma pequena dica para trabalhar com o objeto produto no Magento: /** * Use o método setStoreId duas vezes, caso contrário, qualquer valor editado será salvo na loja padrão, ao invés da selecionada. */ $product = Mage::getModel('catalog/product') ->setStoreId($storeId) ->loadByAttribute('ean', $ean) ->setStoreId($storeId);

maio 28, 2012

Oracle Developer VM

Olá Pessoal Na PHP Conference Brasil deste ano, Todd Trichler da divisão de Developer Marketing da Oracle disponibilizou para quem passou no estande uma Developer Virtual Machine em DVD, para o Virtual Box, contendo além de um Linux como sistema operacional, o Oracle Database 11g Release 2 e as ferramentas de desenvolvimento. Apesar da VM estar prontinha, é necessário alterar as configurações de rede da máquina virtual para que a mesma funcione corretamente. Prometi ao Todd que postaria no blog isso em português, então aí vai o passo-a-passo. ...

dezembro 2, 2011

Lentidão no Magento

Olá. Após um exaustivo trabalho de debug no Magento, o Filipe Ibaldo e eu acabamos por descobrir dois problemas no Magento, relacionados à lentidão na conclusão da compra com muitos produtos (produtos diferentes, e não um produto com 100 unidades). Um dos problemas é o save de cada produto que está no Order, que é executado precisamente em app/code/core/Mage/Sales/Model/Entity/Order/Attribute/Backend/Parent.php, no método afterSave, que demanda MUITO tempo de processamento na minha máquina (Core 2 Duo 2.26/4GB RAM), cerca de 0.3 segundos para cada produto. ...

janeiro 7, 2011

Erro de include no Zend_Loader

Olá. Hoje me deparei com um problema no Zend Framework e seu autoloader de classes, onde uma chamada ao class_exists dispara o autoloader do Zend Framework. A função tem uma opção de não disparar o autoloader, porém, ela sempre retorna false para objetos que são carregados dinamicamente via Zend_Loader. Além disso, se eu uso class_exists sem desabilitar o autoloader, eu recebo um warning o arquivo com a classe não exista, isso por que o Zend_Loader não faz a verificação se o arquivo existe, ele apenas inclui. ...

novembro 1, 2010

Utilizando múltiplas versões do PHP + Apache

Olá. Esta é uma dica para utilizar em ambiente de desenvolvimento e/ou testes, onde é necessário utilizar mais de uma versão do PHP, sem que seja necessário setar uma para todo seu ambiente. Neste caso, a versão será definida via .htaccess, porém, somente é possível utilizar esta técnica se você puder compilar o PHP. É realmente importante pra quem precisa dar suporte a ambientes e/ou sistemas legadosm ou testar a retrocompatiblidade de um código PHP. Parto do princípio que você já saiba compilar o PHP para seu ambiente, se não souber, procure no Google antes. ...

julho 29, 2010