Leon, i am trying out your sfGrid plugin and ran into few small issues where do you want us to report problems/bugs ?
On Apr 11, 10:53 pm, Leon van der Ree <l...@fun4me.demon.nl> wrote: > Today I will provide a tutorial, setting up a (propel-based) > playground with some best practices I came up with so far. (If you > prefer Doctrine, you can still follow the tutorial, but of course need > to setup a Doctrine schema and use the Doctrine plugins) > > If you want to see where all the fuzz is about, peak ahead and look at > the size of the controller and the template! > All configuration can be done in an extended > > Lets begin with a new (Symfony 1.4) Project: > > Tip: create a new repository on your svn-server and check this out! > (this is useful since we are using a lot of plugins from svn, that can > be updated all at once by using svn:externals ) > > svn co your.svn.server/playground-project playground > or, when not using svn > mkdir playground > > cd playground > php /symfony14/data/bin/symfony generate:project --orm=propel > playground > > we now have a new propel-based syfmony 1.4 project. Lets start by > adding all required Plugins: > > svn propedit svn:externals . > > and add the following lines to it: > > plugins/sfPropel15Pluginhttp://svn.symfony-project.com/plugins/sfPropel15Plugin/trunk > plugins/sfPropelObjectPathBehaviorPluginhttp://svn.symfony-project.com/plugins/sfPropelObjectPathBehaviorPlug... > plugins/sfDataSourcePlugin > http://svn.symfony-project.com/plugins/sfDataSourcePlugin/trunk > plugins/sfGridPluginhttp://svn.symfony-project.com/plugins/sfGridPlugin/trunk > > Now we enable our plugins, first by editing our Project configuration, > > edit config/ProjectConfiguration.class.php > and enable your plugins in the setup-function: > > $this->enablePlugins( > 'sfPropel15Plugin', > 'sfPropelObjectPathBehaviorPlugin', > > // 'sfExtjs3Plugin', // soon people > > 'sfDataSourcePlugin', > 'sfGridPlugin' //, > // 'sfGridExtjsPlugin' // soon.... Just teasing ;) > ); > > Setup propel, by editing propel.ini > please note propel1.5 is requiring different behavior-paths and we are > enabling the object-path plugin: > So the behaviors section should look like this: > > ; behaviors > propel.behavior.default = > symfony,symfony_i18n,object_path > > propel.behavior.symfony.class = > plugins.sfPropel15Plugin.lib.behavior.SfPropelBehaviorSymfony > propel.behavior.symfony_i18n.class = > plugins.sfPropel15Plugin.lib.behavior.SfPropelBehaviorI18n > propel.behavior.symfony_i18n_translation.class = > plugins.sfPropel15Plugin.lib.behavior.SfPropelBehaviorI18nTranslation > propel.behavior.symfony_behaviors.class = > plugins.sfPropel15Plugin.lib.behavior.SfPropelBehaviorSymfonyBehaviors > propel.behavior.symfony_timestampable.class = > plugins.sfPropel15Plugin.lib.behavior.SfPropelBehaviorTimestampable > > propel.behavior.object_path.class = > plugins.sfPropelObjectPathBehaviorPlugin.lib.ObjectPathBehavior > > Currently I have a simple schema as an example: > > propel: > city: > id: > name: varchar(255) > country_id: > created_at: > > country: > id: > name: varchar(255) > created_at: > > lets build the model > > ./symfony propel:build-all > > Add an application and empty module: > > ./symfony generate:app frontend > ./symfony generate: frontend cityGrid > > Now add a grid folder to your lib-folder and add a CityGrid.php file > > mkdir lib/grid > edit lib/grid/CityGrid.php > > and add the following code to it: > > <?php > class CityGrid extends sfWebGrid // soon you can extend the > sfGridExtjs3 - class > { > /** > * > * @param sfWebRequest $request > */ > public function __construct(sfWebRequest $request) > { > $cityDataSource = new sfDataSourcePropel('City'); > parent::__construct($cityDataSource); > > $this->setDefaultSort('Country.Name', sfGrid::ASC); > > $this->setColumns(array( > 'Id', > 'Country.Name', > 'Name' > )); > > $this->setColumnTitles(array( > 'Country.Name' => 'Country', > 'Name' => 'City' > )); > $this->setSortable(sfGrid::ALL); > > $this->getPager()->setMaxPerPage(2); > $this->bind($request); > } > > } > > Now you can add the following to your controller: > > edit actions.class.php > > /** > * Executes index action > * > * @param sfRequest $request A request object > */ > public function executeIndex(sfWebRequest $request) > > $this->grid = new CityGrid($request); > > } > > And edit your template, indexSuccess.php > > <?php $grid = $sf_data->getRaw('grid'); ?> > <div id="grid-example"> > <table> > <?php echo $grid->render() ?> > </table> > </div> > > clear your cache > > ./symfony cc > > add some data to your database, use fixtures, or the following: > > // initialize database > $country_nl = new Country(); > $country_nl->setName('the Netherlands'); > > $country_fr = new Country(); > $country_fr->setName('France'); > > $country_be = new Country(); > $country_be->setName('Belgium'); > > $city_ams = new City(); > $city_ams->setCountry($country_nl); > $city_ams->setName('Amsterdam'); > $city_ams->save(); > > $city_rdm = new City(); > $city_rdm->setCountry($country_nl); > $city_rdm->setName('Rotterdam'); > $city_rdm->save(); > > $city_rdm = new City(); > $city_rdm->setCountry($country_nl); > $city_rdm->setName('Den Haag'); > $city_rdm->save(); > > $city_prs = new City; > $city_prs->setName('Paris'); > $city_prs->setCountry($country_fr); > $city_prs->save(); > > $city_bdx = new City; > $city_bdx->setCountry($country_fr); > $city_bdx->setName('Bordeaux'); > $city_bdx->save(); > > $city_brs = new City(); > $city_brs->setCountry($country_be); > $city_brs->setName('Brussel'); > $city_brs->save(); > > next time I will release the extjsGrid. Then I will transform this > example to ExtJS, with only minor changes to the module and the > CityGrid-class.The CityGrid will specialize the ExtjsGrid, providing > it the capabilities to generate not only HTML, but JSON and JS output > as well. The controller currently needs to be altered to add support > to handle .js and .json requests, but I am going to make the routing > engine take care of that. The template currently needs to be extended > as well, to start the initial extjs-application, but this will be > moved to the extjs-grid-plugin soon as well. > > For now I would be happy to get feedback about the current HTML > formatter. > I didn't explained how to modify the (row)formatter yet and how to > define and write widgets, but you should be aware that these are the > key to modifying the HTML rendering (for example to add css-classes > and truncate your texts or format currencies) to your liking. -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en To unsubscribe, reply using "remove me" as the subject.