Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Major
-
Resolution: Unresolved
-
Affects Version/s: 1.2.2
-
Fix Version/s: None
-
Component/s: Sluggable
-
Labels:None
Description
I want to create a non-unique slug of a title field from my table.
But I've found that when I change unique from 'true' to 'false' the slugs were not created or updated
In lib\Doctrine\Template\Listener\Sluggable.php inside preUpdate() function the first if() statement disables the unique (false) option.
Activity
Jacob Mather
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Attachment | dc-623.patch [ 10750 ] |
webPragmatist
made changes -
| Comment |
[ I'm not sure what the point of the check for unique is on preUpdate. Maybe this function is incomplete? {code} /** * Set the slug value automatically when a record is updated if the options are configured * to allow it * * @param Doctrine_Event $event * @return void */ public function preUpdate(Doctrine_Event $event) { if (false !== $this->_options['unique']) { $record = $event->getInvoker(); $name = $record->getTable()->getFieldName($this->_options['name']); if ( ! $record->$name || ( false !== $this->_options['canUpdate'] && ! array_key_exists($name, $record->getModified()) )) { $record->$name = $this->buildSlugFromFields($record); } else if ( ! empty($record->$name) && false !== $this->_options['canUpdate'] && array_key_exists($name, $record->getModified() )) { $record->$name = $this->buildSlugFromSlugField($record); } } } {code} Change to {code} /** * Set the slug value automatically when a record is updated if the options are configured * to allow it * * @param Doctrine_Event $event * @return void */ public function preUpdate(Doctrine_Event $event) { $record = $event->getInvoker(); $name = $record->getTable()->getFieldName($this->_options['name']); if ( ! $record->$name || ( false !== $this->_options['canUpdate'] && ! array_key_exists($name, $record->getModified()) )) { $record->$name = $this->buildSlugFromFields($record); } else if ( ! empty($record->$name) && false !== $this->_options['canUpdate'] && array_key_exists($name, $record->getModified() )) { $record->$name = $this->buildSlugFromSlugField($record); } } {code} ] |