J'ai fait un convertisseur de format de devise personnalisé + basé sur les valeurs de la base de données. Voilà comment je l'utilise dans DetailView
Yii2 GridView - format d'attribut basé sur la valeur de l'autre attribut
use yii\helpers\Html;
use app\commands\AppHelper;
use yii\widgets\DetailView;
use app\models\Part;
<?= DetailView::widget([
'model' => $model,
'attributes' => [
// ...
[
'attribute' => 'price',
'label' => (new Part())->getAttributeLabel('price_user'),
'format' => [
'currency',
AppHelper::getUserCurrencyCode(),
[
'convert' => true,
'currencyFrom' => $model->currency->code,
'currencyTo' => AppHelper::getUserCurrencyCode(),
],
],
],
// ...
],
]) ?>
Dans ce widget, je peux accomplir un tel comportement: quand il y a une valeur numérique, il sera formaté, s'il y a une valeur NULL
, d'habitude (non défini) est imprimé out ... Notez $model->currency->code
qui est des données de la relation, en DetailView
facilement accessible, mais je ne peux pas comprendre comment obtenir ces données en formatter
en GridView
.
Problème lorsque je veux formater des données dans GridView
.
I permettent NULL
des valeurs sur la colonne que je dois utiliser formatter, donc je l'ai déjà jeté loin idée d'utiliser
'value' => function ($data, $key, $index, $column) { return $data->value; }
parce que quand NULL
valeur est présente, yu envoie des données comme celui-ci
<span class="not-set">(not set)</span>
et soit je veux le laisser être ou définir ma valeur personnalisée (en tenant compte de la valeur différente pour les autres colonnes avec la valeur NULL
) et je veux également enregistrer les problèmes de gestion de toutes ces valeurs (not set)
.
Une autre raison est, comme je l'ai remarqué, que si j'utilise 'format' => ...
dans les paramètres d'attribut, le formatage se produit avant de définir les valeurs (not set)
.
Donc je pensais à transmettre en quelque sorte ce $model->currency->code
, qui est des données de relation, à ce formateur.
Des idées? Merci.