That did the trick. Small correction: _getActiveStatus worked for me in the 
Entity class, _activeStatus didn't display anything.

Thank you!
-joe


On Monday, 22 September 2014 04:42:23 UTC-4, José Lorenzo wrote:
>
> Don't use accessors for formatting your columns to be displayed in the 
> view. The accessors are meant to get the data as it should be saved in the 
> database. You can use instead a virtual field such as active_status:
>
> protected function _activeStatus() {
>  return $this->active ? 'Active' : 'Inactive';
> }
>
> echo $entity->active_status;
>
> On Sunday, September 21, 2014 11:45:33 PM UTC+2, Joe Theuerkauf wrote:
>>
>> i have several tables with an `active` column, and the Admin should be 
>> able to de/activate records to determine whether they & related records are 
>> available in the application.
>>
>> Instead of constantly converting T/F or 1/0 to "Active"/"Inactive", i 
>> wrote an Entity getter:
>>
>> protected function _getActive($active) {
>>     return $active ? 'Active' : 'Inactive';
>> }
>>
>> That's been working pretty well. The Entity->active property always 
>> provides the string.
>>
>> The problem is updating the data:
>>
>> SomeTableController gets a request like */some_table/active/2/1* to set 
>> ID 2 "active" (1):
>>
>> public function active($id, $active) {
>>     $entity = $this->SomeTable->get($id);
>>     $entity->active = $active;
>>
>>     if ($this->SomeTable->save($entity)) {
>>         // Success!
>>     }
>>     else {
>>         // Fail!
>>     }
>> }
>>
>> The problem: save() reports a successful save, but the database isn't 
>> updated. Scratch that: the `modified` column is updated, but not the 
>> `active` flag.
>>
>> If i kill _getActive() the update works, but i lose the convenience of 
>> the string representation.
>>
>> My *guess* is, i need a setter to handle the switch, but i'm not sure 
>> exactly how they work. The documentation (
>> http://book.cakephp.org/3.0/en/orm/entities.html#Cake\ORM\Entity::set) 
>> for set mutators shows an example of setting some *other* entity 
>> property ('slug') using the 'title' property. But there's no example for 
>> mutating the property being called, and i don't know if that even makes 
>> sense...
>>
>> Along with no _setActive mutator, i also tried the following:
>>
>> protected function _setActive($active) {
>>     // $this->set('active', $active); <-- Created loop condition & fatal 
>> error.
>>
>>     $this->_properties['active'] = $active;
>>     return $active;
>> }
>>
>> No luck. It does the same as no setter: updates the entity (with updated 
>> active & modified properties), but save() doesn't write the changed 
>> active property to the database.
>>
>> Any help? Thanks.
>> -joe t.
>>
>>

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

Reply via email to