Ir para conteúdo

Arquivado

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

Rafael Impacto

Upload e resize Zend

Recommended Posts

Olá pessoal, estou com dificuldades para redimensionar imagens no zend, estou conseguindo fazer o upload normalmente com a zend form, mais não estou conseguindo redimensionar nem renomear imagens cujo nome já existem.

 

Sugestões de métodos?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara então para redimensionar a imagem eu também estou com problemas ;/

 

mas para renomear a imagem eu estou fazendo assim:

 

$upload_adapter = new Zend_File_Transfer_Adapter_Http();
$upload_adapter->setDestination( APPLICATION_PATH . "/../public/midias/");
$upload_adapter->receive();

/** Extensão do arquivo **/
$ext = explode('/', $upload_adapter->getMimeType());
$ext = $ext[1];

/** Nome do arquivo **/
$nome = md5(uniqid()) . '.' . $ext;

$filePath = $upload_adapter->getDestination();

$filterFileRename = new Zend_Filter_File_Rename(array('target' => $filePath . '/' . $nome , 'overwrite' => true));
$filterFileRename -> filter($upload_adapter->getFileName());

 

Se alguem tiver alguma maneira melhor tb fico aberto a opiniões :P

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara então para redimensionar a imagem eu também estou com problemas ;/

 

Sem você mostrar ou falar qual é o problema fica difícil ajudar. Qual biblioteca você está usando pra redimensionar?

 

Para renomear a imagem você pode usar o filtro Rename. Fica assim:

 

$upload_adapter->addFilter('Rename', array($caminhoAtual, $novoCaminho, true));

 

Só depois de adicionar esse filtro é que você chama o método receive();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, desculpe a demora

 

Estou tentando implementar a classe blueimp http://blueimp.github.com/jQuery-File-Upload/

 

Vi no github uma integração com zend mais não está rolando, passei a classe para um model e a chamada dela para uma action

 

Agora estou tentando soluções como a classe canvas e a wideimage, mais estou iniciando no zend e empacado nisso apesar de já estar conseguindo fazer bastante coisas

 

Obrigado!

 

Sem você mostrar ou falar qual é o problema fica difícil ajudar. Qual biblioteca você está usando pra redimensionar?

 

Para renomear a imagem você pode usar o filtro Rename. Fica assim:

 

$upload_adapter->addFilter('Rename', array($caminhoAtual, $novoCaminho, true));

 

Só depois de adicionar esse filtro é que você chama o método receive();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rafael bom dia,

Já utilizei pelo menos 5 maneiras diferentes de redimensionar imagens quando comecei a trabalhar com Zend. Fato é que existem diversas classes completas de manipulação de imagens que facilitam o trabalho pra você, e como o objetivo principal não é reinventar a roda precisamos analisar e utilizar essas ferramentas.

 

Atualmente a Classe que eu mais utilizo é a class.upload.php que vem sendo mantida e atualizada desde 2003 e esta em constantes melhorias. Qual a real vantagem de utilizar uma classe como esta ? Boaaa pergunta ^^ ... Ela não só redimensiona, ela rotaciona, renomeia, manipula cores, contraste, brilhos, escreve na imagem, adiciona marca d'agua e diversos outros métodos.

 

UTILIZAÇÃO

Aqui depende de como você prefere utilizar. Eu, atualmente utilizo como um Helper de Controlador, como sempre reutilizo minha BIBLIOTECA para todos os projetos, ela já fica disponível.

 

Minha Estrutura:

- app

- lib

..... -> Neo -> Controller -> Action -> Helper -> ClassUpload.php

- public_html

 

 

Como Utilizo:

 


$img	= Zend_Controller_Action_HelperBroker::getStaticHelper('ClassUpload');
$img 	-> Upload($_FILES[‘img’][‘tmp_name’]);
$img 	-> file_new_name_body = ‘novo_nome’;
$img 	-> image_resize   = true; // Habilita o Resize
$img 	-> image_ratio    = true; // Mantem proporção
$img 	-> image_y        = ‘100’;// Tamanho Maximo de Y
$img 	-> image_x        = ‘50’; // Tamanho Maximo de X
$img 	-> process(“/local_de_destino/pasta/”); // Local de Destino

 

Pronto... É bem simples.

Se você não tem sua biblioteca e não esta acostumado a criar um Action Helper, pode simplesmente colocar o arquivo da classe upload na mesma pasta e incluir ele. O que mudaria é:

 


include('/class.upload.php');
$img	= new Upload($_FILES[‘img’][‘tmp_name’]);

 

Só isso... O Resto é fácil de mais, e a documentação é bem completa -> documentação

 

 

OBS:

Mass, mass, masss e se eu utilizar o ZEND FORM ?? O que eu faço ???

Relaxa ^^

é fácil tbm de utilizar.

 

Vamos imaginar a seguinte situação:

 

<? class ProdutosCategoriaForm extends Zend_Form {

       public function init()	{

	// Vamos criar um CAMPO para envio da Imagem
	$arquivo = $this->createElement('file', 'img', array('label' => 'Imagem', 'id' => 'img'));
	$arquivo ->setDestination("img/banners/");
	// Antes de Adicionar o Elemento vamos chamar uma FUNÇÃO chamada UPLOAD
	$this 	 ->Upload($arquivo);  // Note que como parâmetro eu enviei o próprio (createElement -> $arquivo)
	$this	 ->addElement($arquivo);	
       }

public function Upload($campo = NULL){
	$upload   = new Zend_File_Transfer_Adapter_Http();
	if($upload->getFileInfo()){

		$img 	=  Zend_Controller_Action_HelperBroker::getStaticHelper('Upload');
		$img 	-> Upload($_FILES[$campo->getName()]); // NOTE que peguei o NOME DO CAMPO via getName()
		$img 	-> file_new_name_body = ‘novo_nome’;
		$img 	-> image_resize   = true; // Habilita o Resize
		$img 	-> image_ratio    = true; // Mantem proporção
		$img 	-> image_y        = ‘100’;// Tamanho Maximo de Y
		$img 	-> image_x        = ‘50’; // Tamanho Maximo de X
		$img 	-> process($campo->getDestination()); // Local de Destino via getDestination

		// Aqui vem a parte mais IMPORTANTE
		$campo 	-> setIgnore($_FILES[$campo->getName()]); // Como ja enviei a Imagem via $img->process(), mando Ignorar o campo IMAGEM
	}
}

 

Rafael, é meio grande de ler e chato de explicar, mas espero ter conseguido te ajudar. Lembrando sempre que a muuuuuuitas maneiras de fazer o resize. Essa é apenas mais uma.

 

Grande abraço e sucesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Elio, valeu pela dica, até ri com a explicação animada rsrs

 

Bom, também conheço essa classe e a utilizo em meus projetos, a dificuldade que estou é implementar no zend, vou pegar suas explicações ver se consigo desta vez.

 

Valeu a força

 

até mais

 

Rafael bom dia,

Já utilizei pelo menos 5 maneiras diferentes de redimensionar imagens quando comecei a trabalhar com Zend. Fato é que existem diversas classes completas de manipulação de imagens que facilitam o trabalho pra você, e como o objetivo principal não é reinventar a roda precisamos analisar e utilizar essas ferramentas.

 

Atualmente a Classe que eu mais utilizo é a class.upload.php que vem sendo mantida e atualizada desde 2003 e esta em constantes melhorias. Qual a real vantagem de utilizar uma classe como esta ? Boaaa pergunta ^^ ... Ela não só redimensiona, ela rotaciona, renomeia, manipula cores, contraste, brilhos, escreve na imagem, adiciona marca d'agua e diversos outros métodos.

 

UTILIZAÇÃO

Aqui depende de como você prefere utilizar. Eu, atualmente utilizo como um Helper de Controlador, como sempre reutilizo minha BIBLIOTECA para todos os projetos, ela já fica disponível.

 

Minha Estrutura:

- app

- lib

..... -> Neo -> Controller -> Action -> Helper -> ClassUpload.php

- public_html

 

 

Como Utilizo:

 


$img	= Zend_Controller_Action_HelperBroker::getStaticHelper('ClassUpload');
$img 	-> Upload($_FILES[‘img’][‘tmp_name’]);
$img 	-> file_new_name_body = ‘novo_nome’;
$img 	-> image_resize   = true; // Habilita o Resize
$img 	-> image_ratio    = true; // Mantem proporção
$img 	-> image_y        = ‘100’;// Tamanho Maximo de Y
$img 	-> image_x        = ‘50’; // Tamanho Maximo de X
$img 	-> process(“/local_de_destino/pasta/”); // Local de Destino

 

Pronto... É bem simples.

Se você não tem sua biblioteca e não esta acostumado a criar um Action Helper, pode simplesmente colocar o arquivo da classe upload na mesma pasta e incluir ele. O que mudaria é:

 


include('/class.upload.php');
$img	= new Upload($_FILES[‘img’][‘tmp_name’]);

 

Só isso... O Resto é fácil de mais, e a documentação é bem completa -> documentação

 

 

OBS:

Mass, mass, masss e se eu utilizar o ZEND FORM ?? O que eu faço ???

Relaxa ^^

é fácil tbm de utilizar.

 

Vamos imaginar a seguinte situação:

 

<? class ProdutosCategoriaForm extends Zend_Form {

       public function init()	{

	// Vamos criar um CAMPO para envio da Imagem
	$arquivo = $this->createElement('file', 'img', array('label' => 'Imagem', 'id' => 'img'));
	$arquivo ->setDestination("img/banners/");
	// Antes de Adicionar o Elemento vamos chamar uma FUNÇÃO chamada UPLOAD
	$this 	 ->Upload($arquivo);  // Note que como parâmetro eu enviei o próprio (createElement -> $arquivo)
	$this	 ->addElement($arquivo);	
       }

public function Upload($campo = NULL){
	$upload   = new Zend_File_Transfer_Adapter_Http();
	if($upload->getFileInfo()){

		$img 	=  Zend_Controller_Action_HelperBroker::getStaticHelper('Upload');
		$img 	-> Upload($_FILES[$campo->getName()]); // NOTE que peguei o NOME DO CAMPO via getName()
		$img 	-> file_new_name_body = ‘novo_nome’;
		$img 	-> image_resize   = true; // Habilita o Resize
		$img 	-> image_ratio    = true; // Mantem proporção
		$img 	-> image_y        = ‘100’;// Tamanho Maximo de Y
		$img 	-> image_x        = ‘50’; // Tamanho Maximo de X
		$img 	-> process($campo->getDestination()); // Local de Destino via getDestination

		// Aqui vem a parte mais IMPORTANTE
		$campo 	-> setIgnore($_FILES[$campo->getName()]); // Como ja enviei a Imagem via $img->process(), mando Ignorar o campo IMAGEM
	}
}

 

Rafael, é meio grande de ler e chato de explicar, mas espero ter conseguido te ajudar. Lembrando sempre que a muuuuuuitas maneiras de fazer o resize. Essa é apenas mais uma.

 

Grande abraço e sucesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sucesso no upload muito obrigado,

 

e olha eu aqui abusando novamente da sabedoria alheia rsrs

 

consegui fazer o exemplo de incluir a classe, mais acho o helper mais elegante e nos padrões, como estou começando com zend não me aprofundei nisto ainda, tem alguma dica fora a documentação para eu dar uma olhada de como criar um helper trabalhando com modulos?

 

Até mais e mais uma vez muito obrigado.

 

Valew Rafael, se tiver mais alguma dúvida, posta ai que eu vou acompanhando e te ajudando beleza ?? Grande abraço cara...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Novidades, consegui fazer o upload da maneira que eu queria com as dicas de Helper do Elio.

 

Está tudo funcionando, só gostaria de saber se fiz da maneira correta, analisem por favor.

 

No helper fiz o seguinte, criei o arquivo upload no diretório >library >Zend > Controller > Action > Helper

 

No cabeçalho da classe fiz o seguinte:

require_once 'Zend/Controller/Action/Helper/Abstract.php';

class Zend_Controller_Action_Helper_Upload extends Zend_Controller_Action_Helper_Abstract{

 

e no controller ajustei a função de exemplo pro que eu precisava e ficou assim:

   public function upload($file, $file2 = null)
   {
       $image = $file2;
   	if($file != ''){
    	$handle   = Zend_Controller_Action_HelperBroker::getStaticHelper('Upload');
	$handle   -> Upload($file);
    	$size = getimagesize($file['tmp_name']);

	if($size[0] > 800){
		$wSize = 600;
	}else{
		$wSize = $size[0];
	}
	if ($handle->uploaded){

		$handle->image_resize            = true;
		$handle->image_ratio          	 = true;
		$handle->image_x                 = $wSize;
		$handle->image_y                 = 600;
		$handle->Process("imagens/produto");

		if ($handle->processed) {	
			$image = $handle->file_dst_name;
		}
	}
   	}

   	return $image;
   }

 

É no insert e update ficou assim:

   public function addAction()
   {
   	$form =  new Admin_Form_Produtos();
       $model = new Admin_Model_Produtos();
       $id = $this->_getParam('id');

   	if($this->_request->isPost()){
   		if($form->isValid($this->_request->getPost())){
   			$dados = $form->getValues();
   			if($id){
   				$dados['foto1'] = self::upload($_FILES['foto1'], $this->_request->img1);
               	$dados['foto2'] = self::upload($_FILES['foto2'], $this->_request->img2);
               	$dados['foto3'] = self::upload($_FILES['foto3'], $this->_request->img3);
               	$dados['foto4'] = self::upload($_FILES['foto4'], $this->_request->img4); 

                   $where = $model->getAdapter()->quoteInto('id = ?',$id);
                   $model->update($dados, $where);
               }else{
               	$dados['foto1'] = self::upload($_FILES['foto1']);
               	$dados['foto2'] = self::upload($_FILES['foto2']);
               	$dados['foto3'] = self::upload($_FILES['foto3']);
               	$dados['foto4'] = self::upload($_FILES['foto4']);
               	$id = $model->insert($dados);
               }

   			$this->_redirect('/admin/produtos');
   		}
   	}elseif($id){
           $dados = $model->popula($id);
           if(is_array($dados)){
               $form->setAction('/admin/produtos/add/id/'.$id);                
               $form->populate($dados);
           }
       }

        $this->view->form = $form;
        $this->view->dados = $dados;
   }

 

É dessa forma mesmo que utilizo um helper? por favor, fiquem a vontade para comentar e sugerir melhorias, quero me aperfeiçoar no zend e gostaria da ajuda de vocês.

 

Mais uma vez muito obrigado.

 

Valew Rafael, se tiver mais alguma dúvida, posta ai que eu vou acompanhando e te ajudando beleza ?? Grande abraço cara...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande Rafael,

 

Cara é isso ai mesmo. É o que eu sempre digo. Existem diversas maneiras de fazer uma “galinhada”, o prato final é o que importa. ^^ (Não sei de onde eu tirei essa de galinhada. Deve ser o horário do almoço influenciando.)

 

Mas o Rafael, vamos tentar simplificar um pouquinho mais as coisas pra você ??? Seguinte, eu criei aqui pra você 2 Action Helper e 1 View Helper. As actions helper serão separadas da seguinte forma.

 

- ClassUpload.php : que será a Helper que contem TODA a classe upload.php da Veronet.

- Upload.php : Essa é a SUA Helper, que será responsável por instanciar a ClassUpload e realizar todo o trabalho de upload pra você utilizando apenas um array de opções e retornando pra você o nome final do Arquivo. (Mas porque diabos “O nome final” ???)

 

Bommm, nem sempre o nome final da imagem é o mesmo que você mandou para upload. A Imagem por exemplo pode ter um nome com espaços, acentos, extensão errada e etc... Ou seja, vamos MANIPULAR o nome da imagem (caso necessário) e realizar o UPLOAD. Depois é só pegar esse nome manipulado que a função retornou e adicionar no seu banco de dados oks ???

 

Cara, é ai que entra a View Helper LimpaNome. Caso você passe um nome como parâmetro pra ela, esse nome será TRATADO e retornado em um formato válido. Caso contrário, se não for informado NENHUM parâmetro para a função, ele irá gerar um nome aleatório de 10 caracteres (ideal para galeria de imagens ).

 

Bora ver os códigos ???

 

Meu FORM Chamados: (Apesar de não interessar.)

 

<?php class Chamados extends Zend_Form {

	public function init()	{

		$this->setMethod	('post');
		$this->setAttrib 	('enctype', 'multipart/form-data');

		$solicitante 	= $this->createElement('text', 'solicitante', array('id' => 'solicitante'));
		$this	->addElement($solicitante);

		$anexo =  $this->createElement('file', 'anexo', array('id' => 'anexos'));
		$anexo -> setDestination('img');
		$this	-> addElement($anexo);

		$submit	 =  $this->createElement('submit', 'Enviar');
		$this    -> addElement($submit);
	}
}

 

 

Bommm, A Função UPLOAD é meio grandinha... Fica fods Colar aqui... Mas a função dela é pegar as informações do Zend Form (como nome, destino e etc...) e tratar. Essa função tbm identifica se é um arquivo ou uma imagem. Se for um arquivo, ele simplesmente trata o NOME e envia para o servidor. Segue abaixo a imagem da Função:

 

Logico que ela é bem mais complexa, e o donwload dela na integra esta aqui:

lib -> Neo -> COntroller -> Action -> Helper -> Upload.php

 

function_upload.GIF

 

A View Helper LimpaNome.php serve apenas para tratar os nomes de arquivos.

segue abaixo:

 

<? class Neo_View_Helper_LimpaNome {

public function LimpaNome($string = NULL, $tipo = NULL, $qnt_caracteres = 10){

		if($this->codificacao($string) == 'UTF-8') $string = utf8_decode($string);

			$CaracteresAceitos 	= 'abcdxywzABCDZYWZ0123456789';
			$caracteres			= array("Ç", "ç","~","^","]","[","{","}",";",":","´",",",">","<","/","|","@","$","%","ã","â","á","à","é","è","ó","ò","+","=","*","&","(",")","!","#","?","`","ã","©", "õ", " ", "  ","-", "‡", "‰", "ú", "ü");
			$subistitue 		= array("c", "c",""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,"a","a","a","a","e","e","o","o","","","","","","","","","","","a","", "o", "_", "", "_", "", "", "u", "u");

			if($tipo == 'limpa'){
				$expReg = preg_replace('/\s[\s]+/'	,'-' ,$string);    // Procurando por MULTIPLOS espaços
				$expReg = preg_replace('/\_[\_]+/'	,'-' ,$expReg);    // Procurando por MULTIPLOS underlines
				$expReg = preg_replace('/[\s\W]+/'	,'-' ,$expReg);    // Strip off spaces and non-alpha-numeric
				$expReg = preg_replace('/^[\-]+/'	,''	 ,$expReg);	   // Strip off the starting hyphens
				$expReg = preg_replace('/[\-]+$/'	,''	 ,$expReg);	   // Strip off the ending hyphens
				$expReg = strtolower($expReg); 
				$novo_nome 	= str_replace($caracteres,$subistitue,$expReg);
			}

		  	else {
			  	$novo_nome 		 = null;
				$max 			 = strlen($CaracteresAceitos)-1;
			  	for($i=0; $i < $qnt_caracteres; $i++) {  $novo_nome .= $CaracteresAceitos{mt_rand(0, $max)};  }
			}
			return $novo_nome;
}

//CREDITO: Rafael Jaques
// http://www.phpit.com.br/artigos/detectandodescobrindo-o-charsetcodificacao-de-uma-string-utf-8-iso-8859-1-etc.phpit
function codificacao($string) {
       return mb_detect_encoding($string.'x', 'UTF-8, ISO-8859-1');
   }
}

 

 

Agoraaaaaa... A Mágica...

Olha como ficou fácil de utilizar.

 

Na minha INDEX Controller :

 

<? class IndexController extends Zend_Controller_Action {

public function indexAction()
{
	$form = new Chamados();

	if($this->_request->isPost())
		if($form->isValid($_POST))
		{
			$config = array('imagemX' => '100', 'imagemY' => '100', 'destino' => 'img/', 'nomeAleatorio' => true);
			$img 	= Zend_Controller_Action_HelperBroker::getStaticHelper('Upload')-> Upload($form->anexo, $config);
			$this->_helper->redirector('index');
		}


	$this->view->form = $form;	
}

}

 

 

Bommm, é isso... Ficou bemmmm simples de utilizar e reutilizar a função não acha ???

Espero que ajude ^^

 

 

PS: Aaaaa segue aqui o LINK de como EU utilizo o Zend. Estrutura de pastas e etc... E como eu organizo minha lib. Isso é pra você Rafael que esta iniciando e tem algumas dúvidas de como é utilizado. BAIXAR .rar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal Elio, valeu pela lógica dos helpers, realmente fica mais facil para utilizar em outros momentos.

 

Até mais, abraço

 

Grande Rafael,

 

Cara é isso ai mesmo. É o que eu sempre digo. Existem diversas maneiras de fazer uma “galinhada”, o prato final é o que importa. ^^ (Não sei de onde eu tirei essa de galinhada. Deve ser o horário do almoço influenciando.)

 

Mas o Rafael, vamos tentar simplificar um pouquinho mais as coisas pra você ??? Seguinte, eu criei aqui pra você 2 Action Helper e 1 View Helper. As actions helper serão separadas da seguinte forma.

 

- ClassUpload.php : que será a Helper que contem TODA a classe upload.php da Veronet.

- Upload.php : Essa é a SUA Helper, que será responsável por instanciar a ClassUpload e realizar todo o trabalho de upload pra você utilizando apenas um array de opções e retornando pra você o nome final do Arquivo. (Mas porque diabos “O nome final” ???)

 

Bommm, nem sempre o nome final da imagem é o mesmo que você mandou para upload. A Imagem por exemplo pode ter um nome com espaços, acentos, extensão errada e etc... Ou seja, vamos MANIPULAR o nome da imagem (caso necessário) e realizar o UPLOAD. Depois é só pegar esse nome manipulado que a função retornou e adicionar no seu banco de dados oks ???

 

Cara, é ai que entra a View Helper LimpaNome. Caso você passe um nome como parâmetro pra ela, esse nome será TRATADO e retornado em um formato válido. Caso contrário, se não for informado NENHUM parâmetro para a função, ele irá gerar um nome aleatório de 10 caracteres (ideal para galeria de imagens ).

 

Bora ver os códigos ???

 

Meu FORM Chamados: (Apesar de não interessar.)

 

<?php class Chamados extends Zend_Form {

	public function init()	{

		$this->setMethod	('post');
		$this->setAttrib 	('enctype', 'multipart/form-data');

		$solicitante 	= $this->createElement('text', 'solicitante', array('id' => 'solicitante'));
		$this	->addElement($solicitante);

		$anexo =  $this->createElement('file', 'anexo', array('id' => 'anexos'));
		$anexo -> setDestination('img');
		$this	-> addElement($anexo);

		$submit	 =  $this->createElement('submit', 'Enviar');
		$this    -> addElement($submit);
	}
}

 

 

Bommm, A Função UPLOAD é meio grandinha... Fica fods Colar aqui... Mas a função dela é pegar as informações do Zend Form (como nome, destino e etc...) e tratar. Essa função tbm identifica se é um arquivo ou uma imagem. Se for um arquivo, ele simplesmente trata o NOME e envia para o servidor. Segue abaixo a imagem da Função:

 

Logico que ela é bem mais complexa, e o donwload dela na integra esta aqui:

lib -> Neo -> COntroller -> Action -> Helper -> Upload.php

 

function_upload.GIF

 

A View Helper LimpaNome.php serve apenas para tratar os nomes de arquivos.

segue abaixo:

 

<? class Neo_View_Helper_LimpaNome {

public function LimpaNome($string = NULL, $tipo = NULL, $qnt_caracteres = 10){

		if($this->codificacao($string) == 'UTF-8') $string = utf8_decode($string);

			$CaracteresAceitos 	= 'abcdxywzABCDZYWZ0123456789';
			$caracteres			= array("Ç", "ç","~","^","]","[","{","}",";",":","´",",",">","<","/","|","@","$","%","ã","â","á","à","é","è","ó","ò","+","=","*","&","(",")","!","#","?","`","ã","©", "õ", " ", "  ","-", "‡", "‰", "ú", "ü");
			$subistitue 		= array("c", "c",""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,""	,"a","a","a","a","e","e","o","o","","","","","","","","","","","a","", "o", "_", "", "_", "", "", "u", "u");

			if($tipo == 'limpa'){
				$expReg = preg_replace('/\s[\s]+/'	,'-' ,$string);    // Procurando por MULTIPLOS espaços
				$expReg = preg_replace('/\_[\_]+/'	,'-' ,$expReg);    // Procurando por MULTIPLOS underlines
				$expReg = preg_replace('/[\s\W]+/'	,'-' ,$expReg);    // Strip off spaces and non-alpha-numeric
				$expReg = preg_replace('/^[\-]+/'	,''	 ,$expReg);	   // Strip off the starting hyphens
				$expReg = preg_replace('/[\-]+$/'	,''	 ,$expReg);	   // Strip off the ending hyphens
				$expReg = strtolower($expReg); 
				$novo_nome 	= str_replace($caracteres,$subistitue,$expReg);
			}

		  	else {
			  	$novo_nome 		 = null;
				$max 			 = strlen($CaracteresAceitos)-1;
			  	for($i=0; $i < $qnt_caracteres; $i++) {  $novo_nome .= $CaracteresAceitos{mt_rand(0, $max)};  }
			}
			return $novo_nome;
}

//CREDITO: Rafael Jaques
// http://www.phpit.com.br/artigos/detectandodescobrindo-o-charsetcodificacao-de-uma-string-utf-8-iso-8859-1-etc.phpit
function codificacao($string) {
       return mb_detect_encoding($string.'x', 'UTF-8, ISO-8859-1');
   }
}

 

 

Agoraaaaaa... A Mágica...

Olha como ficou fácil de utilizar.

 

Na minha INDEX Controller :

 

<? class IndexController extends Zend_Controller_Action {

public function indexAction()
{
	$form = new Chamados();

	if($this->_request->isPost())
		if($form->isValid($_POST))
		{
			$config = array('imagemX' => '100', 'imagemY' => '100', 'destino' => 'img/', 'nomeAleatorio' => true);
			$img 	= Zend_Controller_Action_HelperBroker::getStaticHelper('Upload')-> Upload($form->anexo, $config);
			$this->_helper->redirector('index');
		}


	$this->view->form = $form;	
}

}

 

 

Bommm, é isso... Ficou bemmmm simples de utilizar e reutilizar a função não acha ???

Espero que ajude ^^

 

 

PS: Aaaaa segue aqui o LINK de como EU utilizo o Zend. Estrutura de pastas e etc... E como eu organizo minha lib. Isso é pra você Rafael que esta iniciando e tem algumas dúvidas de como é utilizado. BAIXAR .rar

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.