示例#1
0
	public function export(Atomik_Model_Builder $builder)
	{
		$definition = new Atomik_Db_Definition($builder->getManager()->getDbInstance());
		$definition->dropBeforeCreate();
		
		$tableName = $builder->tableName;
		$table = $definition->table($tableName);
		
		foreach ($builder->getFields() as $field) {
			list($type, $length) = $field->getSqlType();
			$column = $table->createColumn($field->name, $type, $length, $field->getOptions('sql-'));
			
			if ($builder->getPrimaryKeyField() == $field) {
				$table->primaryKey($field->name);
				$column->options['auto-increment'] = true;
			}
			
			if ($builder->isFieldPartOfReference($field)) {
				$table->index($field->name, $field->getOption('sql-index', null));
			}
		}
		
		$builder->getBehaviourBroker()->notifyBeforeExport($builder, $definition);
		$sql = $definition->toSql();
		$builder->getBehaviourBroker()->notifyAfterExport($builder, $sql);
		
		return $sql;
	}
示例#2
0
	/**
	 * Sets the model builder associated to this form
	 * 
	 * @param Atomik_Model_Builder $builder
	 */
	public function setBuilder(Atomik_Model_Builder $builder)
	{
		$this->_builder = $builder;
		$this->_fields = array();
		
		$options = new Atomik_Options($builder->getOptions($this->_optionPrefix));
		$this->setFormTemplate($options->getOption('template', Atomik_Form::getDefaultFormTemplate()));
		$this->setFieldTemplate($options->getOption('field-template', Atomik_Form::getDefaultFieldTemplate()));
		$this->setOptions($options->getOptions());
		
		foreach ($builder->getFields() as $modelField) {
			if ($modelField->getOption('ignore', false, $this->_optionPrefix)) {
				continue;
			}
			
			$formField = null;
			$defaultLabel = $modelField->name;
			
			if ($builder->isFieldPartOfReference($modelField) && !$modelField->getOption('no-reference', false, $this->_optionPrefix)) {
				$reference = $builder->getReferenceFromSourceField($modelField);
				if ($reference->isHasMany()) {
					continue;
				}
				
				$defaultLabel = $reference->name;
				$options = $modelField->getOptions($this->_optionPrefix);
				$options['reference'] = $reference;
				
				require_once 'Atomik/Model/Form/Field/Reference.php';
				$formField = Atomik_Form_Field_Factory::factory('Atomik_Model_Form_Field_Reference', 
					$modelField->name, $options);
					
			} else {
				$formField = $modelField->getFormField();
			}
			
			$this->_fields[$modelField->name] = $formField;
			$this->_labels[$modelField->name] = $modelField->getLabel();
			$formField->setParent($this);
		}
	}