public function setNameField($data, $value) { if ($data->get(self::SLUG) == null) { $data->set(self::SLUG, Slug::create($value)); } return $value; }
public function actionUpdate($id) { $page = $this->loadModel($id); if (isset($_POST['Page'])) { if (Settings::get('SEO', 'slugs_enabled')) { if (isset($page->slug)) { if (isset($page->slug->slug) && $_POST['Page']['slug'] != $page->slug->slug) { if ($_POST['Page']['slug'] == '') { $page->slug->delete(); $page->slug = NULL; } else { $page->slug->change($_POST['Page']['slug']); } } } else { $page->slug = Slug::create($_POST['Page']['slug'], array('view', 'id' => $id)); $page->save(); } } try { if ($page->save()) { $this->redirect(array('view', 'id' => $page->id)); } } catch (Exception $e) { $page->addError('', $e->getMessage()); } } $this->render('update', array('page' => $page)); }
/** * When the model boots, register a created event listener that will create a slug, * using the model's id as the salt value for the generation of thee slug. */ public static function boot() { parent::boot(); static::created(function ($model) { $model->slug = Slug::create($model->id); $model->save(); }); }
public function afterSave($event) { //slug for pages are handled in PageController, to prevent infinite loop if (get_class($this->owner) == 'Page') { return; } $page = $this->owner->page; if (Settings::get('SEO', 'slugs_enabled') && isset($_POST['Page']['slug']) && $_POST['Page']['slug'] != '') { if ($this->owner->scenario == 'insert' || $this->owner->scenario == 'update' && !isset($page->slug)) { //get the page $page = Page::model()->findByPk($page->id); //save the slug $page->slug = Slug::create($_POST['Page']['slug'], array('view', 'id' => $this->owner->id)); $page->save(); } } }