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} ] |
This list may be incomplete, as errors occurred whilst retrieving source from linked applications:
- Request to http://www.doctrine-project.org/fisheye/ failed: Error in remote call to 'FishEye 0 (http://www.doctrine-project.org/fisheye/)' (http://www.doctrine-project.org/fisheye) [AbstractRestCommand{path='/rest-service-fe/search-v1/crossRepositoryQuery', params={query=DC-623, expand=changesets[-21:-1].revisions[0:29],reviews}, methodType=GET}] : Received status code 503 (Service Temporarily Unavailable)
Theoretically this should clear up the issue. Sorry for not having the time for a complete test at the moment,