Como desenvolvedor todo dia matamos um leão. Hoje quero compartilhar uma situação que tivem com Zend Framework e os tipos de dados que tinha que trafegar na minha aplicação.
O problema
Quando tentei enviar uma variável pela url na minha aplicação em Zend Framework ela continha barras no em um parâmetro chamado grade "/BI/CV/PT". O que gerava uma url do tipo http://URL_PATH/MODULO/CONTROLLER/ACTION/id/289069/grade/BI/CV/PT. Quando eu tentava acessar essa URL recebia de retorno um bom NOT FOUND.
Mesmo utilizando a função nativa do PHP stripslashes() (resultando em http://URL_PATH/MODULO/CONTROLLER/ACTION/id/289069/grade/BI%2FCV%2FPT) continuava tendo o mesmo problema.
A solução
Ao pesquisar e com ajuda do @yourwebmarker descobri que se tratava de uma configuração do Apache para permitir o uso de barras codificadas. Você encontra sobre isso em http://httpd.apache.org/docs/2.2/mod/core.html#allowencodedslashes. O que fiz foi adicionar no meu arquivo de configuração do virtual host a linha AllowEncodedSlashes On e tudo funcionou perfeitamente. Exemplo:
<VirtualHost *:80>
ServerName test.local
DocumentRoot "/home/local/public"
SetEnv APPLICATION_ENV "development"
AllowEncodedSlashes On
<Directory "/home/local/public">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Abraços!
No comments:
Post a Comment