Traduceri in baza de date – CRUD

Cum facem un CRUD pentru tabele care au tabele de traduceri *_text atasate

Pentru a intelege usor problema, explicam direct pe un exemplu real.

Ipoteza

Avem template-urile de conturi care au denumirile multi-laguage.

Cerinta

Trebuie sa avem CRUD pentru aceste template-uri de conturi (cu care sa putem edita deci, si denumirea care este multi-language).

Structura in DB (probabil deja facuta, daca ai ajuns sa ai nevoie de crud)

Datele sunt tinute in ap_account_template cu denumirea in ap_account_template_text , campul “name” (vezi traduceri in baza de date – sistemul).

Implementarea

  1. in modelul tabelei principale (ApAccountTemplateController) care extinde MActiveRecord (!!!) :
    // declaram campurile multi-language care trebuie sa fie editabile in formular
    public $multilanguageFieldsForCRUD = ['name'];
    
    // si inseram regulile lor
    public function rules() {
      $rules = [
        [['isAutomated'], 'integer'],
        [['name_1'], 'required'],
        [['name'], 'string', 'max' => 400],
      ];
      $this->attachLanguageFieldRules($rules); // <-- aici
      return $rules;
    }
    
  2. in formular ap-account-template/_form.php:
    <?= $model->attachMultilanguageFieldsToForm($form)?>

     

    Gata!

About

Software Development Manager, Architect

Leave a Reply

Your email address will not be published. Required fields are marked *

[TOP]