示例#1
0
 /**
  * Saves a navigation.
  *
  * @param AmNav_NavigationModel $navigation
  *
  * @throws Exception
  * @return bool
  */
 public function saveNavigation(AmNav_NavigationModel $navigation)
 {
     // Navigation data
     if ($navigation->id) {
         $navigationRecord = AmNav_NavigationRecord::model()->findById($navigation->id);
         if (!$navigationRecord) {
             throw new Exception(Craft::t('No navigation exists with the ID “{id}”.', array('id' => $navigation->id)));
         }
     } else {
         $navigationRecord = new AmNav_NavigationRecord();
     }
     // Set attributes
     $navigationRecord->setAttributes($navigation->getAttributes());
     $navigationRecord->setAttribute('settings', json_encode($navigation->settings));
     // Validate
     $navigationRecord->validate();
     $navigation->addErrors($navigationRecord->getErrors());
     // Save navigation
     if (!$navigation->hasErrors()) {
         // Save in database
         return $navigationRecord->save();
     }
     return false;
 }