Solved.

The issue was that I had not overridden the toArray method in my
object to provide my virtual column.  When I added this to
Game.class.php, everything worked:

    public function toArray($deep = true, $prefixKey = false)
    {
        $arr = parent::toArray($deep, $prefixKey);
        $arr['end_time'] = $this->getEndTime();
        return $arr;
    }

As far as I can tell this does not exist in the documentation,
http://www.symfony-project.org/book/1_2/14-Generators

Custom Fields
As a matter of fact, the fields configured in generator.yml don't even
need to correspond to actual columns defined in the schema. If the
related class offers a custom getter, it can be used as a field for
the list view; if there is a getter and/or a setter, it can also be
used in the edit view. For instance, you can extend the BlogArticle
model with a getNbComments() method similar to the one in Listing
14-10.

On Oct 23, 1:37 pm, ashton <[email protected]> wrote:
> I copied the _form.php template out of the cache, and added
>     var_dump($form['end_time']->getValue());
>     which yields:
>     NULL
> the other fields print correctly:
>     var_dump($form['end_ts']->getValue());
>     prints
>     string(19) "2008-12-05 01:00:00"
>
> which leads me to think that the issue has something to do with the
> value of the form getting set originally.
>
> On Oct 23, 11:25 am,ashton<[email protected]> wrote:
>
>
>
> > Rather, that does die when the form is submitted.
>
> > On Oct 23, 9:31 am,ashton<[email protected]> wrote:
>
> > > That will die when the form is submitted.  Unfortunately, that's not
> > > the issue that I'm having, what I'm seeing is that when going to the
> > > edit page initially, getEndTime never gets called, and my end_time
> > > widget doesn't get any values.  Before I submit the form, just loading
> > > the page.
>
> > > On Oct 23, 9:12 am, Alexandre SALOME <[email protected]>
> > > wrote:
>
> > > > Try adding an updateEndTimeColumn method in your form :
>
> > > > class GameForm extends ...
> > > > {
> > > >   // ......
>
> > > >   public function updateEndTimeColumn($value)
> > > >   {
> > > >     die("yes !");
> > > >     $this->getObject()->setEndTime($value);
> > > >   }
>
> > > > }
>
> > > > Alexandre
>
> > > > 2009/10/23ashton<[email protected]>
>
> > > > > I have already added those.  The widget shows up on the edit page,
> > > > > just without any content in it. i.e. it's always at 00:00
> > > > > thought I had that info on there, sry.
>
> > > > > GameForm.class.php
> > > > >   protected $minutes = array('00','05',
> > > > > 10,15,20,25,30,35,40,45,50,55);
> > > > >   public function configure()
> > > > >   {
> > > > >       $timeOptions = array('can_be_empty' => false,
> > > > >                            'minutes' => $this->minutes);
>
> > > > >        $this->widgetSchema['end_time'] = new sfWidgetFormTime
> > > > > ($timeOptions);
> > > > >        $this->validatorSchema['end_time'] =
> > > > >           new sfValidatorTime(array('required' => false));
>
> > > > > On Oct 22, 4:37 pm, Alexandre SALOME <[email protected]>
> > > > > wrote:
> > > > > > You should add widget/validator to your form.
>
> > > > > > 2009/10/22ashton<[email protected]>
>
> > > > > > > Hi,
> > > > > > > I'm trying to add a method ('endTime') that doesn't exist in the
> > > > > > > model, it's essentially a convenience method to set just the time 
> > > > > > > part
> > > > > > > of time_ts which is a timestamp.  It shows up properly in the 
> > > > > > > list,
> > > > > > > however, the widget is never populated with a value in the edit 
> > > > > > > page.
> > > > > > > As far as I can tell, getEndTime never even gets called when 
> > > > > > > loading
> > > > > > > the edit page, because when I put a 'die()' in there, execution 
> > > > > > > never
> > > > > > > stops (although it does on the list page)
> > > > > > > Thx!
>
> > > > > > > Game.class.php
> > > > > > >    public function getEndTime($format = 'H:i') {
> > > > > > >        return date($format, strtotime($this->getEndTs()));
> > > > > > >    }
>
> > > > > > >    public function setEndTime($time) {
> > > > > > >        $this->setEndTs($this->getDate().' '.$time);
> > > > > > >    }
>
> > > > > > > generator:
> > > > > > >  class: sfDoctrineGenerator
> > > > > > >  param:
> > > > > > >    model_class:           Game
> > > > > > >    theme:                 jroller
> > > > > > >    non_verbose_templates: true
> > > > > > >    with_show:             false
> > > > > > >    singular:              ~
> > > > > > >    plural:                ~
> > > > > > >    route_prefix:          game
> > > > > > >    with_doctrine_route:     1
>
> > > > > > >    config:
> > > > > > >      actions: ~
> > > > > > >      fields:
> > > > > > >        league_id:         { label: League }
> > > > > > >        field_id:          { label: Field }
> > > > > > >        home_team_id:      { label: Home Team }
> > > > > > >        away_team_id:      { label: Away Team }
> > > > > > >        game_status_id:    { label: Status }
> > > > > > >        start_ts:
> > > > > > >          label: Start
> > > > > > >          help: The day and time the this game starts
> > > > > > >        end_ts:
> > > > > > >          label: End
> > > > > > >          help: The date and time that this game ends
> > > > > > >        end_time:
> > > > > > >          label: End
> > > > > > >          help: The time that this game ends
> > > > > > >      list:
> > > > > > >        display: [field, =game_status, home_team_id, away_team_id,
> > > > > > > start_ts, end_ts, end_time, score]
>
> > > > > > >      filter: ~
> > > > > > >      form:
> > > > > > >        display: [field_id, game_status_id, home_team_id,
> > > > > > > away_team_id, start_ts, end_ts, end_time]
> > > > > > >      edit: ~
> > > > > > >      new:  ~
>
> > > > > > > symfony 1.2 / doctrine
>
> > > > > > --
> > > > > > Alexandre Salomé -- [email protected]
>
> > > > --
> > > > Alexandre Salomé -- [email protected]
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"symfony users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/symfony-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to