J'ai commencé par créer mon fichier de correspondance items.yml dans le répertoire /config/updates à la racine du projet.

1: { id: I002, label: "Shoes blue", slug: shoes_blue }
2: { id: I003, label: Recycle, slug: recycle }
3: { id: I004, label: Tables, slug: tables }
4: { id: I006, label: "Shoes red", slug: shoes_red }
5: { id: I008, label: Chairs, slug: chairs }

Ensuite j'ai créé cette méthode dans la class utilitaire:

/**
 * Matches the items IDs
 * @param String $itemID
 * @return String of the item ID matched.
 */
public static function matchItemID( $itemID )
{
    $items = sfYaml::load( sfConfig::get( 'sf_config_dir' ) . "/updates/items.yml" ) ;
    return key_exists( $itemID, $items )     
    ? $items[$itemID]['id']     
    : '' ;
}

Puis j'ai fait ces tests unitaires:

$t->comment( "::matchItemID" ) ;
$t->is( Utils::matchItemID( 4 ) , "I006" , "The itemID must matched to 'I006'" ) ;
$t->is( Utils::matchItemID( "" ) , "" , "The itemID must be an empty string" ) ;

Une fois certain que ma correspondance fonctionnait, je l'ai mise en place dans son action dédiée:

public function executeMatchItem( sfWebRequest $request )
{
    $itemID = $request->getPostParameter( 'item_id' ) ;
    $item = Utils::matchItemID( $itemID );
...
}

Et voilà le tour est joué.

Maintenant je n'ai plus qu'à ajouter les entrées dans mon fichier items.yml quand il faut.