Jump to content

[1.6] ObjectModel::update et multilang


Recommended Posts

Bonjour,

 

 

Comment utiliser la fonction save de la class ModelObject pour un champ multilingue ?

 

 

 

J'ai deux tables SQL dont une entité.

table
+----------+----------+
| id_table | date_upd | 
+----------+----------+
|       12 |  2015-05 |
+----------+----------+

table_lang
+----+----------+----------+-----------+
| id | id_table | id_lang  |      name | 
+----+----------+----------+-----------+
|  1 |       12 |        1 |   "Hello" |
+----+----------+----------+-----------+
|  2 |       12 |        2 | "Bonyour" |
+----+----------+----------+-----------+

J'essais de mettre à jour un enregistrement en base de donnée ("Bonyour" en "Bonjour").

J'ai donc créer un ModelObject:

<?php
class TableModel extends ObjectModel
{
	public static $definition = array(
		'table' => 'table',
		'primary' => 'id_table',
		'multilang' => true,
		'fields' => array(
			'id_table'  => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true),
			'date_upd' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => false),
			'name' => array('type' => self::TYPE_STRING, 'required' => false),
		),
	);
}

Mais quand je fais :

<?php

$POST = array('id_table'=>12, 'name'=>'Bonjour');

$table = new TableModel(12);
$table->id_table = 12;// ???
if (Validate::isLoadedObject($table)) {
	if($table->save($POST)){
		$this->_html = 'Success';
	} else {
		$this->_html = 'Error';
	}
}

La fonction renvoi false et rien n'est mis à jour.

 

Quelqu'un aurai un peu de temps pour me mettre sur la piste

 

Link to comment
Share on other sites

J'ai résolut mon problème en ajoutant 'lang'=>true, et en affectant les données directement au model.

'name' => array('type' => self::TYPE_STRING, 'required' => false, 'lang' => true)

La fonction save prend en paramètre les valeurs par default et non les données.

<?php

$table = new TableModel(12);
$table->id_table = 12;
$table->name = "Bonjour";
 

if (Validate::isLoadedObject($table)) { if($table->save()){ $this->_html = 'Success'; } else { $this->_html = 'Error'; } }

Merci de m'avoir lue ;)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...