Passar para dentro da base de dados os valores em maiúsculas

Versão: Yii 2.0.4

Sendo uma questão básica para muitos, a verdade é que não consigo resolver o problema de passar para dentro da base de dados os valores em maiúsculas.

Consigo obrigar o campo a escrever em maiúsculas, no caso o campo ‘NOME’ mas este não guarda na base de dados os valores inscritos/apresentados no formulário.

O código inserido no formulário é,

<?= $form->field($model, ‘Nome’)->textInput([‘style’ => ‘text-transform: uppercase’, ‘maxlength’ => 254]) ?>

Provavelmente, faltará definir uma função para que o campo seja guardado na base de dados.

Alguém tem uma solução fácil… Obrigado

Bom dia,

Eu utilizo a função strtoupper no controller


public function actionCreate()

{


$model->campo = strtoupper("minha_string");


}

Caro Gustavo,

Não entendo a expressão “minha_string”. Que valor é este… Onde se vai buscar. É algum valor que tem de ser ‘declarado’ tipo variável. Percebo a lógica mas parece-me faltar alguma coisa para ter exito com este comando. Obrigado.

O "minha_string" é o texto que deseja deixar em caixa alta.

No exemplo, a ideia e pegar o valor do campo e passar como parâmetro na função strtoupper antes de gravar no BD.

Parece que encontrei uma solução que responde de forma fácil ao problema que apresentei.

O código é o seguinte,

public function rules()

{

  return [


         ...


         [['Nome Completo'],'filter','filter'=&gt;'strtoupper'],


         ...


         ];

}

Melhores cumprimentos.

@Master, esse filter strroupper funcionou para o que você queria?

Caro Cálcio,

De facto, responde ao que eu queria. Independentemente do que o utilizador escrever - minusculas ou maiusculas, o filtro converte todo o conjunto para maiusculas. Neste caso, é o campo Nome Completo. Queria estabelecer um padrão para o campo, independentemente da vontade ou do erro em digitalizar por parte do utilizador.

Cumprimentos.

Como assim um padrão? Fiquei confuso. De alguns exemplos de como quer que funcione.

Master,

Se você usar o text-transform, ele só vai alterar visualmente a digitação, o correto é você usar esse filtro na função rules() do seu Model, mais tem um problema, já testou com caracteres acentuados? Em alguns caso os caracteres acentuados, eles ainda continua em minusculo, então vou postar uma dica aqui de como fazer.




public function rules()

{

	return [

		['name', 'filter', 'filter' => function($value) {

				return mb_strtoupper($value, 'utf-8');

			}

		],

	];

}



Se sua aplicação já estiver usando utf-8 como padrão, você pode alterar o ‘utf-8’ por Yii::$app->charset.