Yii Framework Forum: Erro CJuiDatePicker - Yii Framework Forum

Jump to content

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

Erro CJuiDatePicker Rate Topic: -----

#1 User is offline   André Luiz Müller 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 16-April 10

Posted 10 May 2010 - 05:18 PM

Pessoal

Estou tentando usar um CJuiDatePicker num form e não está sendo atribuído o valor informado no widget para o model.

O código que estou usando é o seguinte:

            $this->widget('zii.widgets.jui.CJuiDatePicker', array(
                'name'=>'data_transacao',
                'model'=>$model,
                'attribute'=>'data_transacao',
                // additional javascript options for the date picker plugin
                'options'=>array(
//                    'showAnim'=>'fold',
                    'dateFormat'=>'dd/mm/yy',
                    'changeMonth' => 'true',
                    'changeYear' => 'true',
                    'showButtonPanel' => 'true',
                    'constrainInput' => 'true'
                ),
                'htmlOptions'=>array(
                    'style'=>'height:16px;'
                ),
            ));


Quando uso esse widget tenho que tirar o atributo de "required" no model?

Obrigado.
0

#2 User is offline   André Luiz Müller 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 16-April 10

Posted 10 May 2010 - 05:25 PM

Pra esclarecimento:

Estou usando a versão 1.1.2.r2086.
0

#3 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 11 May 2010 - 09:32 AM

Cara, não sei se é a mesma coisa, mas ultimamente eu estou tendo que setar alguns valores que vem de POST na mão .. Não descobri o pq, mas eu tenho em alguns lugares o horrível código abaixo. 

    $this->_pedido->attributes = $_POST['Pedido'];
    $this->_pedido->observacao = $_POST['Pedido']['observacao'];


Pode parecer um absurdo, mas algumas coisas a propriedade attributes não ta setando certo. To usando yii-1.1.0.r1700, mas notei isso em versões mais antigas.


Veja se não é o mesmo caso que o meu, e pode ser que seja algum bug do FW.


Every solution creates a problem.
twitter.com/nenhumnick
0

#4 User is offline   André Luiz Müller 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 16-April 10

Posted 12 May 2010 - 12:31 AM

Pra mim seu workaround dá erro de índice não definido.
Como se nem o campo do model definido no CJuiDatePicker seja atribuido ao model vinculado.

O workaround que funcionou foi esse (também gambiarra do tipo force value):

            if(isset($_POST['data_transacao']))
                $model->data_transacao = $_POST['data_transacao'];


O valor do input do controle do form recebe valor, mas o atributo não.

Estranho...
0

#5 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 12 May 2010 - 10:53 AM

Cara, então pelo que vc ta falando ai, vc não ta gerando o input de data com CHtml::activeTextField. Pq o nome do componente (E consequente o nome da variável que vc recebe) não está da forma que o YII costuma gerar. 

Veja se usando a função CHtml::activeTextField, e se por acaso não está alterando o nome. Se não der certo, posta sua view pra a gente dar uma olhada. 


Every solution creates a problem.
twitter.com/nenhumnick
0

#6 User is offline   André Luiz Müller 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 16-April 10

Posted 12 May 2010 - 12:59 PM

Fala Daniel.

Estou gerando o input do form da seguinte maneira:

<div class="row">
		<?php echo $form->labelEx($model,'data_transacao'); ?>
		<?php
            $this->widget('zii.widgets.jui.CJuiDatePicker', array(
                'name'=>'data_transacao',
                'model'=>$model,
                'attribute'=>'data_transacao',
                // additional javascript options for the date picker plugin
                'options'=>array(
//                    'showAnim'=>'fold',
                    'dateFormat'=>'dd/mm/yy',
                    'changeMonth' => 'true',
                    'changeYear' => 'true',
                    'showButtonPanel' => 'true',
                    'constrainInput' => 'true'
                ),
                'htmlOptions'=>array(
                    'style'=>'height:16px;'
                ),
            ));
        ?>
		<?php echo $form->error($model,'data_transacao'); ?>
	</div>


Preciso usar a função CHtml::activeTextField antes do $this->widget ???

Valeu a força!
0

#7 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 12 May 2010 - 01:20 PM

Seguinte. Os CHtml::active... da vida, geram as tags de formulários com os nomes padronizados no formato Classe[Field]. O CJuiDatePicker não faz isso, então, vc tem que setar na mão. 

Existe uma função pra resolver este problema. CHtml::resolveName($model, $attribute). Use ela pra gerar o nome do CJuiDatePicker, e vc não vai mais precisar da linha abaixo pra poder pegar o valor da data.

 if(isset($_POST['data_transacao'])) $model->data_transacao = $_POST['data_transacao'];

Every solution creates a problem.
twitter.com/nenhumnick
0

#8 User is offline   André Luiz Müller 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 13
  • Joined: 16-April 10

Posted 12 May 2010 - 02:54 PM

Opa! Funcionou... mas não sem esforço. B)

A função CHtml::resolveName(CModel $model, string $attribute) exige que o segundo parâmetro seja uma variável, não sei por quê cargas d'água que dava erro ao executá-la assim:

    $input_data_name = CHtml::resolveName($model, 'data_transacao');


Só funcionou executando assim:

            $input_data_name = 'data_transacao';
            $input_data_name = CHtml::resolveName($model, $input_data_name);


O name gerado é no formato dos CHtml::active... -> Model[attribute]

Já não é mais necessária aquela atribuição forçada no Controller.

Obrigado pela ajuda.
0

#9 User is offline   nandomegaman 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 1
  • Joined: 27-August 09

Posted 14 May 2010 - 08:38 PM

seguinte, daniel bastos, vc comentou que tem q receber alguns attributes na "mão", eu tbm fazia isso, acho q descobri o problema. isso geralmente acontecia(pra mim) quando usava scenarios, eu recebia o post e setava o scenario, corrigi esse problema apenas setando o scenario antes de receber os dados via post.

t+

abraço galera yii4ever
0

#10 User is offline   Daniel Augusto Bastos 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 347
  • Joined: 25-May 09
  • Location:Rio de Janeiro - Brasil

Posted 17 May 2010 - 10:11 AM

Pois é .. mas só tem 1 lugar no sistema inteiro que uso scenarios. Em lugares que não uso, acontece o mesmo. 
Every solution creates a problem.
twitter.com/nenhumnick
0

#11 User is offline   jward 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 26-May 10
  • Location:U.S.

Posted 28 May 2010 - 03:51 PM

Pardon me for not providing this in Portuguese.
I think I encountered the same problem as posted here so I translated it to English.

I discovered a solution to my problem. I hope this may help with yours.
If you are having a problem validating required data in CJuiDatePicker, try this:

$form->widget('zii.widgets.jui.CJuiDatePicker', array(
    //'name'=>'data_transacao',
    'name'=>'ModelName[data_transacao]', 

Substitute ModelName with the actual name of the applicable model.
I'm not yet sure if changing $this to $form is necessary.

I tried this after I viewed the html source for 'data_transacao' as a textField and validation passed.
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