Como passar parametros usando o redirect?

519 views
Skip to first unread message

dev...@nurturing.com.br

unread,
Jan 13, 2015, 12:17:05 PM1/13/15
to cakep...@googlegroups.com
Eu estou usando o seguinte trecho de código na minha controller: 
$this->redirect(array('action' => 'duplicate', $contact));

Ele funciona, me manda pra minha função duplicate, mais não passa os dados como parametro. Já olhei no book do cakePHP e pelo que eu li lá é dessa forma.

Alguém aí já usou algo parecido ou sabe o que está errado?

Pedro Soares

unread,
Jan 13, 2015, 12:21:22 PM1/13/15
to cakep...@googlegroups.com
tenta: $this->redirect('duplicate/'.$contact);

--
--
CakePHP Tuga (cakephp-pt)
 
Utilize http://bin.cakephp.org para códigos
Cookbook: http://book.cakephp.org
 
Website do CakePHP: http://cakephp.org/
Website do grupo: http://groups.google.com/group/cakephp-pt?hl=pt-PT
---
Recebeu esta mensagem porque subscreveu ao grupo "CakePHP Tuga" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para cakephp-pt+...@googlegroups.com.
Para publicar uma mensagem neste grupo, envie um email para cakep...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cakephp-pt.
Para mais opções, visite https://groups.google.com/d/optout.



--

Devidy Oliviera

unread,
Jan 13, 2015, 12:38:00 PM1/13/15
to cakep...@googlegroups.com
Tentei dessa forma mais ele não consegue converter o vetor em string e enviar. 
Da a seguinte mensagem:
 Array to string conversion [APP/Controller/ContactsController.php, line 229]

Atenciosamente,

Devidy H. Oliveira
Nurturing Software House
(31) 2511-2820
(31) 8375-3126

Recebeu esta mensagem porque subscreveu um tópico no grupo "CakePHP Tuga" do Grupos do Google.
Para anular a subscrição deste tópico, visite https://groups.google.com/d/topic/cakephp-pt/5jH0ngCihFg/unsubscribe.
Para anular a subscrição deste grupo e de todos os seus tópicos, envie um email para cakephp-pt+...@googlegroups.com.

Pedro Soares

unread,
Jan 13, 2015, 12:54:57 PM1/13/15
to cakep...@googlegroups.com
Simples, você está passando um array, ele não vai passar mesmo, você tem que quebrar os valores desse array.

Devidy Oliviera

unread,
Jan 13, 2015, 1:15:27 PM1/13/15
to cakep...@googlegroups.com
Como eu quebro esses valores?  Me desculpa a perguntação é que sou estagiário e ainda estou aprendendo.

Atenciosamente,

Devidy H. Oliveira
Nurturing Software House
(31) 2511-2820
(31) 8375-3126

Tayron Miranda

unread,
Jan 13, 2015, 2:42:38 PM1/13/15
to cakep...@googlegroups.com
Você vai conseguir passar assim: $this->redirect('/controller/action/param1/param2/param3'), talvez assim você consiga, (estou respondendo de cabeça mas acho que dá sim) $this->redirect( array( 'controller' => 'pessoas', 'action' => 'excluir/' . $id ) )

      


Alexandre Azevedo

unread,
Jan 13, 2015, 2:58:19 PM1/13/15
to cakep...@googlegroups.com
Cara essa variavel $contact tem valor? Porque da forma que esta fazendo o redirect está correto. Mais por duvidas, faz assim $this->redirect(array('controller' => 'seu controller', 'action' => 'duplicate', $contact));



Enviado com MailTrack


--
Att,
Alexandre Azevedo
Bacharel em Sistema de Informação pela FIB
Pós-Graduando em Tecnologias para Aplicações Web
Analista de Sistemas e Desenvolvedor Web
PHP | CakePHP | CodeIgniter | Mysql | Postgres | JavaScript /Jquery
Tim:  (71) 8738-6638
Vivo: (71) 9662-4552
skype: alexandreazevedo4

Pedro Soares

unread,
Jan 13, 2015, 3:32:24 PM1/13/15
to cakep...@googlegroups.com
Devidy, sua variavel $contact parece ser um array. Caso seje um array, há varias formas de você quebrar ela, vou citar duas:
Usando o foreach, e usando o array 'linear', ou seja, você escreve a variavel e entre colchetes escreve o parametro, a localizacao do dado desejado.
Exemplo: $contact['Contato']['id']
No exemplo acima estou percorrendo o array $contact indo até a posição identificada como contato e dentro dela o id.
Array são matrizes.

Para você ver o que você pode colocar nos colchetes da sua váriavel, é necessário saber qual a estrutura dentro do array,
No cakephp você pode usar o "debug($contact)" e isso irá mostrar para você, ou usar o var_dump($contact), print_r($contact), é só você escolher.

Em 13 de janeiro de 2015 16:15, Devidy Oliviera <dev...@nurturing.com.br> escreveu:

Pedro Soares

unread,
Jan 13, 2015, 3:33:00 PM1/13/15
to cakep...@googlegroups.com
Assim, 'debugando' a suas variaveis, você pode saber se ela realmente possui algum conteudo ou se está vazia

Devidy Oliviera

unread,
Jan 14, 2015, 7:27:49 AM1/14/15
to cakep...@googlegroups.com
Eu tinha um vetor dentro da minha variável. Dessa forma deu certo.

$this->redirect(array('action' => 'duplicate', $email, $telefone1, $telefone2));

Atenciosamente,

Devidy H. Oliveira
Nurturing Software House
(31) 2511-2820
(31) 8375-3126

Tayron Miranda

unread,
Jan 14, 2015, 7:29:55 AM1/14/15
to cakep...@googlegroups.com
Essa action está dentro do mesmo controller?

      


Tayron Miranda

unread,
Jan 14, 2015, 7:30:24 AM1/14/15
to cakep...@googlegroups.com
Digo, a action duplicate está dentro do mesmo arquivo de controller que você está implementando esse redirect?
--

      


Devidy Oliviera

unread,
Jan 14, 2015, 7:36:05 AM1/14/15
to cakep...@googlegroups.com
Está sim Tayron.

Atenciosamente,

Devidy H. Oliveira
Nurturing Software House
(31) 2511-2820
(31) 8375-3126

Tayron Miranda

unread,
Jan 14, 2015, 7:41:16 AM1/14/15
to cakep...@googlegroups.com
Então não seria melhor invocar o método ao invés de fazer um redirect não? 
Exemplo: $this->duplicate($email, $telefone1, $telefone2);

Devidy Oliviera

unread,
Jan 14, 2015, 8:21:40 AM1/14/15
to cakep...@googlegroups.com
​Eu tentei dessa forma, eu até consigo enviar o vetor como parametro, mais aí a minha view 'Duplicate' não renderizava na tela. No final do código do método eu até forcei a renderização mais aí a url da página não muda.​

Atenciosamente,

Devidy H. Oliveira
Nurturing Software House
(31) 2511-2820
(31) 8375-3126

Tayron Miranda

unread,
Jan 14, 2015, 8:28:11 AM1/14/15
to cakep...@googlegroups.com
Pra fazer o que precisa ser feito em duplicate, você precisa  renderizar a view de duplicate? Ou ela irá apenas fazer um serviço, como por exemplo duplicar algum dado e gravar no banco, se sim, basta você cariar o método como private, e colocar um return nele, no caso se conseguiu salvar, true ou false;

Tayron Miranda

unread,
Jan 14, 2015, 8:29:16 AM1/14/15
to cakep...@googlegroups.com
Na verdade nem é obrigatório ter retorno, eu geralmente só crio o método como private e chamo ele quando necessário.
--

      


Devidy Oliviera

unread,
Jan 14, 2015, 10:03:11 AM1/14/15
to cakep...@googlegroups.com
Eu preciso renderizar a tela e mostrar os contacts duplicados.

Atenciosamente,

Devidy H. Oliveira
Nurturing Software House
(31) 2511-2820
(31) 8375-3126

Tayron Miranda

unread,
Jan 14, 2015, 11:17:54 AM1/14/15
to cakep...@googlegroups.com
Entendi.. mas você precisa trocar de tela (visualmente)? 
Na tela referente ao método que você está (implementando o redirect) não pode mostrar isso não? Caso você responda não, o ideal seria realmente usar o redirect igual você está fazendo, pelo menos eu faria isso.

Devidy Oliviera

unread,
Jan 14, 2015, 11:30:27 AM1/14/15
to cakep...@googlegroups.com
Eu realmente tenho que ir pra outra tela. Mais eu já resolvi eu quebrei o vetor e passei 3 parametros em variáveis diferentes. 
Muito obrigado pela atenção.

Atenciosamente,

Devidy H. Oliveira
Nurturing Software House
(31) 2511-2820
(31) 8375-3126

Tayron Miranda

unread,
Jan 14, 2015, 11:36:49 AM1/14/15
to cakep...@googlegroups.com
\o
Reply all
Reply to author
Forward
0 new messages