sfPropelActAsCommentableBehaviorPlugin - 0.1.0

Propel commentable behavior

You are currently browsing
the website for symfony 1

Visit the Symfony2 website

« Back to the Plugins Home


Forgot your password?
Create an account



advanced search
Information Readme Releases Changelog Contribute
Show source | Show as Markdown



This behavior permits to attach comments to Propel objects.


  • add/remove comment(s) on an object
  • unit-tested

Philosophy of the stuff

  • commentable objects must have a primary key
  • comments can only be attached on objects that have already been saved
  • comments are saved when applied

Get it installed

  • go to your project's root

  • Install the plugin:

     ./symfony plugin-install http://plugins.symfony-project.com/sfPropelActAsCommentableBehaviorPlugin
  • if not already done, enabled behaviors in config/propel.ini:

     propel.builder.addBehaviors = true
  • edit the classes that you want to make taggable. For instance, for lib/model/Post.php:

    [php] save(); $post->addComment('This is a cool comment.'); $post->addComment(array('title' => 'this is a cool title', 'text' => 'this is a cool comment', 'author_id' => sfContext::getInstance()->getUser()->getUserId())); $post->addComment(array('This is a cool comment.', 'this is one other comment')); ### Retrieving one object's tags It is possible to retrieve tags from a taggable object: [php] getTags(); foreach ($tags as $tag) { echo $tag.'
    '; }

Removing one object's tags

Of course, tags can also be removed:

$post = PostPeer::retrieveByPk(1);
$post->removeTag('toto, tutu');


The behavior implement the following methods: * addComment($comment) - Adds a comment to the object. The "comment" param can be an associative array (in which each element represents one of the comment properties), or an array of associative arrays. In this case, it adds all the comments to the object. * clearComments() - Deletes all the comments attached to the object * getComments($options = array()) - Returns the list of the comments attached to the object. The options array can contain several options * getNbComments() - Returns the number of the comments attached to the object. * removeComment($comment_id) - Removes one comment from the object.

The behavior class also implement the following method, which is a facility for preloading all the tags for a set of taggable objects * preloadTags($objects) - Preload tags for a set of objects

Unit testing

The plugin has been deeply unit-tested. The tests are located in test/unit/sfPropelActAsCommentableBehaviorTest.php. If you want to run them: * install the plugin * configure a model for using it, for instance "Post" * edit this file and, if required, modify the application name and the TEST_CLASS constant, line 3:

     define('TEST_CLASS', 'Post');
  • run the tests:

     php plugins/sfPropelActAsCommentableBehaviorPlugin/test/unit/sfPropelActAsCommentableBehaviorTest.php

License and credits

This plugin is licensed under the MIT license. You can contact the maintainer at xavier@lacot.org


version 0.1 - 2007-09-13

Initial public release. Features comments attachment to heterogene Propel objects.


  • add a symfony module for posting and displaying comments
  • handle other custom fields in comments
  • use sfPropelActAsPolymorphicBehaviorPlugin ? :)