Yii Framework Forum: Manutenção Em Sistema Existente - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Manutenção Em Sistema Existente Manutenção - Iniciante Rate Topic: -----

#1 User is offline   Xevious 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 66
  • Joined: 14-August 14

Posted 14 August 2014 - 02:40 PM

Eu recebi a incumbência de fazer uma manutenção num CRM em Yii.
A minha primeira tarefa é colocar um campo a mais numa tabela.
Campo Profissão em Contatos

Em protected\models\Contato.php
acrescentei na função attributeLabels() a linha
'Profissao' => 'Profissão',


E em protected\views\contato\_form.php
Acrescentei

<?php echo $form->textFieldRow($model,'Profissao',array('class'=>'span10','maxlength'=>30)); ?>

Dentro de um dos Spam's

Mas quando vou onde deveria ser mostrado a lista de contatos da erro.
A propriedade "Contato.Profissao" não está definida.

..framework\db\ar\CActiveRecord.php(145)


Não sei se preciso regerar os Models depois de uma alteração.
(também não sei fazer isto)

Me parece que existe código que não foi gerado automaticamente e não sei se ao regerar os models não seria sobreescrito.

Qualquer ajuda é bem vinda.

Tenho alguma experiência com PHP mas sem FrameWork nem OO mas conheço OO pois programo em C#
0

#2 User is offline   Renan Lauriano 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 09-August 14

Posted 15 August 2014 - 12:53 AM

Comecei a trabalhar com Yii há pouco tempo, não sei se estou dizendo besteira mas pelo o que eu já conheço, ao instanciar uma classe model o Yii automaticamente cria as variaveis com os nomes das colunas da tabela.
Verifique se o nome da coluna é "Profissao" mesmo(case sensitive).
0

#3 User is offline   Adrian Lucas 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 231
  • Joined: 13-October 11
  • Location:João Pessoa - Paraíba

Posted 15 August 2014 - 05:52 AM

View PostXevious, on 14 August 2014 - 02:40 PM, said:

Eu recebi a incumbência de fazer uma manutenção num CRM em Yii.
A minha primeira tarefa é colocar um campo a mais numa tabela.
Campo Profissão em Contatos

Em protected\models\Contato.php
acrescentei na função attributeLabels() a linha
'Profissao' => 'Profissão',


E em protected\views\contato\_form.php
Acrescentei

<?php echo $form->textFieldRow($model,'Profissao',array('class'=>'span10','maxlength'=>30)); ?>

Dentro de um dos Spam's

Mas quando vou onde deveria ser mostrado a lista de contatos da erro.
A propriedade "Contato.Profissao" não está definida.

..framework\db\ar\CActiveRecord.php(145)


Não sei se preciso regerar os Models depois de uma alteração.
(também não sei fazer isto)

Me parece que existe código que não foi gerado automaticamente e não sei se ao regerar os models não seria sobreescrito.

Qualquer ajuda é bem vinda.

Tenho alguma experiência com PHP mas sem FrameWork nem OO mas conheço OO pois programo em C#


Xevious no seu BD o nome está com letra maiúscula Profissao? Acrescenta também a variável no rules no próprio model, como exemplo abaixo.
public function rules() {
	array('profissao', 'length', 'max' => 100),
	array('profissao', 'safe', 'on' => 'search'),
}


Adrian Lucas
A fé em Deus nos faz crer no incrível,
ver o invisível e realizar o impossível.

0

#4 User is offline   LukaszFokin 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 14-June 11

Posted 15 August 2014 - 06:58 AM

Cara, isso geralmente acontece se você chamar esse atributo e ele não existir no seu BD.

Verifica isso, qq coisa posta aqui novamente.
0

#5 User is offline   Xevious 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 66
  • Joined: 14-August 14

Posted 15 August 2014 - 08:17 AM

View PostRenan Lauriano, on 15 August 2014 - 12:53 AM, said:

Verifique se o nome da coluna é "Profissao" mesmo(case sensitive).

O nome do campo esta correto
aqui um exemplo de como esta na função attributeLabels de protected\models\Contato.php

public function attributeLabels()
    {
        return array(
            'Empresa' => 'Conta',
            'Empresa_Fantasia' => 'Conta',
            'Contato' => 'Contato',
            'Email' => 'E-mail',
            'Telefone' => 'Telefone',
            'Celular' => 'Celular',
            'Data' => 'Data de Cadastro',
            'Fone_Comercial_Ramal' => 'Ramal',
            'Cargo' => 'Cargo',
            'Aniversario' => 'Nascimento',
            'Profissao' => 'Profissão',
        );
    }


View PostAdrian Lucas, on 15 August 2014 - 05:52 AM, said:

Acrescenta também a variável no rules no próprio model, como exemplo abaixo.
public function rules() {
	array('profissao', 'length', 'max' => 100),
	array('profissao', 'safe', 'on' => 'search'),
}



Acabei de testar acrescentando essas linhas no rules e deu na mesma
A propriedade "Contato.Profissao" não está definida.
na página contato/update/3810/

View PostLukaszFokin, on 15 August 2014 - 06:58 AM, said:

Cara, isso geralmente acontece se você chamar esse atributo e ele não existir no seu BD.

Verifica isso, qq coisa posta aqui novamente.

Eu testei novamente se esta utilizando a base que estou trabalhando e é ela mesma

De qualquer maneira muito obrigado pelo rápido retorno

é muito chato passar um dia inteiro sem conseguir acrescentar um campo simples numa página, mas estou com fé que hoje consigo ir adiante, qualquer ajuda é bem vinda ;)
0

#6 User is offline   LukaszFokin 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 14-June 11

Posted 15 August 2014 - 08:23 AM

Xevious, tem como vc postar seu controller, model e view pra poder analisar melhor?
0

#7 User is offline   Xevious 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 66
  • Joined: 14-August 14

Posted 15 August 2014 - 09:12 AM

View PostLukaszFokin, on 15 August 2014 - 08:23 AM, said:

Xevious, tem como vc postar seu controller, model e view pra poder analisar melhor?


Achei que ficaria muito 'bagunçado' então coloquei no meu DropBox, o link é este
www.dropbox.com/s/hfi7m4osxzknphe/CRM.rar


Contem só os arquivos alterados por mim (já que o sistema esta funcionando normal em produção)
/controllers/ContatoController.php
/models/Contato.php
/views/contato/_form.php

Os pontos de alteração que fiz estão indicadas pelo comentário Minha alteração esta aqui

Não cheguei a fazer nenhuma alteração no Controller
dei uma olhada e só vi código relacionado a tratamentos especificos e este campo não precisa de tratamento nenhum, nem mesmo é obrigatório a única coisa é que ele teria o tamanho limite de 30 caracteres.

Aquelas linhas que me sugeriu que colocasse estão no rules em contato.php, mas creio que elas não causariam problema mesmo que fossem inapropriadas, porque creio que o "rules" só seria tratado no momento da gravação e meu problema é anterior, a página nem abre, por causa do erro.

Pelo que vi, o campo não esta sendo considerado no Model e então em todas partes que tratam do campo pelo model da erro.

Não vi no model uma relação dos campos da tabela (como esperaria numa classe PDO por exemplo), apenas vi um comentário no cabeçario do fonte relacionando os campos e então adicionei este novo campo ali também.

Minha necessidade é simplérrima.
Adicionar um campo tipo texto, sem nenhum critério de validação, nem mesmo seria obrigatório, com o máximo de 30 caracteres, ele não seria listado só gravar e ler ele e depois exportar, mas isso .. fica pro próximo capítulo :)
0

#8 User is offline   Adrian Lucas 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 231
  • Joined: 13-October 11
  • Location:João Pessoa - Paraíba

Posted 15 August 2014 - 09:24 AM

View PostXevious, on 15 August 2014 - 09:12 AM, said:

Achei que ficaria muito 'bagunçado' então coloquei no meu DropBox, o link é este
www.dropbox.com/s/hfi7m4osxzknphe/CRM.rar


Contem só os arquivos alterados por mim (já que o sistema esta funcionando normal em produção)
/controllers/ContatoController.php
/models/Contato.php
/views/contato/_form.php

Os pontos de alteração que fiz estão indicadas pelo comentário Minha alteração esta aqui

Não cheguei a fazer nenhuma alteração no Controller
dei uma olhada e só vi código relacionado a tratamentos especificos e este campo não precisa de tratamento nenhum, nem mesmo é obrigatório a única coisa é que ele teria o tamanho limite de 30 caracteres.

Aquelas linhas que me sugeriu que colocasse estão no rules em contato.php, mas creio que elas não causariam problema mesmo que fossem inapropriadas, porque creio que o "rules" só seria tratado no momento da gravação e meu problema é anterior, a página nem abre, por causa do erro.

Pelo que vi, o campo não esta sendo considerado no Model e então em todas partes que tratam do campo pelo model da erro.

Não vi no model uma relação dos campos da tabela (como esperaria numa classe PDO por exemplo), apenas vi um comentário no cabeçario do fonte relacionando os campos e então adicionei este novo campo ali também.

Minha necessidade é simplérrima.
Adicionar um campo tipo texto, sem nenhum critério de validação, nem mesmo seria obrigatório, com o máximo de 30 caracteres, ele não seria listado só gravar e ler ele e depois exportar, mas isso .. fica pro próximo capítulo :)


Xevious faz o seguinte:

Deixa o rules assim:

    public function rules()
    {
        return array(
            array('Empresa_Fantasia, Contato, Email, Profissao', 'required', 'on'=>'register'),
            array('Empresa_Fantasia', 'checkEmpresa_Fantasia', 'on'=>'register'),
            array('Cod_Crm', 'required', 'on'=>'register', 'message'=>'Houve um erro ao cadastrar! Contatar o administrador.'),
            array('Aniversario','type','type'=>'date', 'dateFormat'=>'dd/MM/yyyy', 'message'=>'{attribute} deve ter o formato dd/mm/yyyy'),
			array('Profissao', 'length', 'max' => 250),
            array('Email', 'email'),
            array('Cargo, Empresa, Fone_Comercial_Ramal, Telefone, Celular, Aniversario', 'default', 'setOnEmpty'=>true),
            array('Cargo, Empresa', 'numerical', 'integerOnly'=>true),
            array('Fone_Comercial_Ramal', 'length', 'max'=>10),
            array('Contato, Email, Empresa_Fantasia', 'length', 'max'=>255),
            array('Telefone, Celular', 'length', 'max'=>20),  
            array('Empresa_Fantasia, Contato, Cod_Tipo_Conta, Email, Telefone, Profissao', 'safe', 'on'=>'search'),  
        );
    }



Caso ainda continue dando erro, posta o script do BD para também analisarmos.
Adrian Lucas
A fé em Deus nos faz crer no incrível,
ver o invisível e realizar o impossível.

0

#9 User is offline   LukaszFokin 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 32
  • Joined: 14-June 11

Posted 15 August 2014 - 09:33 AM

View PostXevious, on 15 August 2014 - 09:12 AM, said:

Achei que ficaria muito 'bagunçado' então coloquei no meu DropBox, o link é este
www.dropbox.com/s/hfi7m4osxzknphe/CRM.rar


Contem só os arquivos alterados por mim (já que o sistema esta funcionando normal em produção)
/controllers/ContatoController.php
/models/Contato.php
/views/contato/_form.php

Os pontos de alteração que fiz estão indicadas pelo comentário Minha alteração esta aqui

Não cheguei a fazer nenhuma alteração no Controller
dei uma olhada e só vi código relacionado a tratamentos especificos e este campo não precisa de tratamento nenhum, nem mesmo é obrigatório a única coisa é que ele teria o tamanho limite de 30 caracteres.

Aquelas linhas que me sugeriu que colocasse estão no rules em contato.php, mas creio que elas não causariam problema mesmo que fossem inapropriadas, porque creio que o "rules" só seria tratado no momento da gravação e meu problema é anterior, a página nem abre, por causa do erro.

Pelo que vi, o campo não esta sendo considerado no Model e então em todas partes que tratam do campo pelo model da erro.

Não vi no model uma relação dos campos da tabela (como esperaria numa classe PDO por exemplo), apenas vi um comentário no cabeçario do fonte relacionando os campos e então adicionei este novo campo ali também.

Minha necessidade é simplérrima.
Adicionar um campo tipo texto, sem nenhum critério de validação, nem mesmo seria obrigatório, com o máximo de 30 caracteres, ele não seria listado só gravar e ler ele e depois exportar, mas isso .. fica pro próximo capítulo :)


Cara, por incrível que pareça eu coloquei seus arquivos aqui em um projeto que tenho, criei uma tabela com base nos atributos da model e funcionou normal. Tirei até um print.

Tenta dar uma reiniciada do seu apache e mysql. Pode não ser um problema da aplicação.

Attached File(s)

  • Attached File  teste.png (21.55K)
    Number of downloads: 7

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users