Vi

Gostaria de modificar alguns valores de data do mysql quando eles são mostrados na view depois de buscados na admin.

Os valores que estão retornando são do tipo: AAAA/MM/DD (A=ano, M=mês, D=dia), mas eu queria que retornasse DD/MM/AAAA.

Segue o código da view.php:


<?php

/* @var $this MaterialController */

/* @var $model Material */


$this->breadcrumbs=array(

	$model->idmaterial,

);


if(Yii::app()->user->getState('tipousuario') != 3)

{

	$this->menu=array(

		array('label'=>'Novo Material', 'url'=>array('create')),

		array('label'=>'Deletar Material', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->idmaterial),'confirm'=>'Você tem certeza que deseja deletar esse material?')),

		array('label'=>'Buscar Material', 'url'=>array('admin')),

		array('label'=>'Atualizar Material', 'url'=>array('update', 'id'=>$model->idmaterial)),

	);

}

else // idusuario == 3

{

	$this->menu=array(

		array('label'=>'Buscar Material', 'url'=>array('admin')),

	);

}

?>


<h1>Material: <?php echo $model->nome; ?></h1>


<?php $acao = 'view' ?>


<?php $this->widget('zii.widgets.CDetailView', array(

	'data'=>$model,

	'attributes'=>Permissao::model()->buildQuant($acao),

)); ?>

E o respectivo buildQuant na model:


public function buildQuant($acao)

	{

		$criteria=new CDbCriteria;

		$criteria->select='*';  

		$criteria->condition="menu_idmenu = :menu AND tipousuario_idtipousuario =:tipousuario ";

		$criteria->params=array(':menu'=>3,

								':tipousuario'=>Yii::app()->user->getState('tipousuario')

		);


		$permissoes = Permissao::model()->findAll($criteria);


		foreach ($permissoes as $menu) {

			

			if($menu->tipopermi_mquanti == 1 && $acao == 'view')

			{

				return array(

						'idmaterial',

						'nome',

						'data_ult_entr',

						'data_ult_saida',

						'quant_ult_entr',

						'quant_ult_saida',

						'quant_atual',

						'categoria.nome',

						);

			}

			else

			{

				if($menu->tipopermi_mquanti != 1 && $acao == 'view')

				{

					return array(

							'idmaterial',

							'nome',

							'disponibilidade',

							);

				}

				else

				{

					if($menu->tipopermi_mquanti == 1 && $acao == 'admin')

					{

						return array(

							'idmaterial',

							'nome',

							'categoria.nome',

							array(

								'class'=>'CButtonColumn',

							),

						);

					}

					else

					{

						if($menu->tipopermi_mquanti != 1 && $acao == 'admin')

						{

							return array(

							'idmaterial',

							'nome',

							'disponibilidade',

							array(

								'class'=>'CButtonColumn',

								),

							);

						}

					}

				}

			}

		}

	}

Observação: A última parte eh só para que o usuário comum não possa ver a quantidade exata de material que existe, e sim se está disponível ou não ( Na verdade, essa buildQuant está relacionada a outra função na mesma model que trata das permissões, mas como esse n eh o objetivo do tópico q abri, então não irei postá-la, mas caso vcs queiram posso postar a função para permissões e explicá-la ).

Os valores data_ult_entr e data_ult_saida estão vindo do banco do modo citado acima ( EX: 2014-05-27 ), mas eu quero que venha no formato DD/MM/AAAA ( EX: 27/05/2014 ). Como não estão relacionados com outras tabelas, não consegui modificar esses valores ( Nesse caso. Em outros casos, todos com relações, consegui modificar os valores sem problemas ).

Eu uso assim:


Yii::app()->dateFormatter->format("d/m/y",strtotime($data->date))

:)

Obrigado, mas…aonde eu coloco o comando? Nos attributes do Widget?

Ficaria assim ( Não testado )





.

.


return array(

	'idmaterial',

	'nome',

	array(

		'name' =>'data_ult_entr',

		'value' => Yii::app()->dateFormatter->format("dd/MM/yyyy",$data1),

	),

	array(

		'name' =>'data_ult_saida',

		'value' => Yii::app()->dateFormatter->format("dd/MM/yyyy",$data2),

	),	

	'quant_ult_entr',

	'quant_ult_saida',

	'quant_atual',

	'categoria.nome',

);

 

                       

.

.



Funcionou muito bem ( Após algumas alterações na função ). Obrigado :D

Amigo criar no teu model a seguinte função:





    function afterFind() {

        $this->data_ult_entr = Yii::app()->dateFormatter->formatDateTime(

                CDateTimeParser::parse($this->data_ult_entr, 'yyyy-MM-dd'), 'medium', null);

        $this->data_ult_saida = Yii::app()->dateFormatter->formatDateTime(

                CDateTimeParser::parse($this->data_ult_saida, 'yyyy-MM-dd'), 'medium', null);

        return true;

    }



Com isso todas as datas do teu sistema ficará no padrão.