Doctrine 1
  1. Doctrine 1
  2. DC-623

Impossible to create non-unique slugs

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major 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

        Adwise Internetmarketing created issue -
        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} ]

          People

          • Assignee:
            Jonathan H. Wage
            Reporter:
            Adwise Internetmarketing
          • Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated: