本文整理汇总了PHP中FormBuilder::load方法的典型用法代码示例。如果您正苦于以下问题:PHP FormBuilder::load方法的具体用法?PHP FormBuilder::load怎么用?PHP FormBuilder::load使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FormBuilder
的用法示例。
在下文中一共展示了FormBuilder::load方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: validateSubForm
public function validateSubForm()
{
$class = get_class($this);
$fb = FormBuilder::load($class);
$listView = $fb->findAllField(['type' => 'ListView']);
foreach ($listView as $k => $lv) {
## if listview is valid
if ((@$lv['fieldTemplate'] == "datasource" || @$lv["fieldTemplate"] == "form") && @$lv['templateForm'] != '') {
if (isset($this->attributes[$lv['name']])) {
$items = $this->attributes[$lv['name']];
foreach ($items as $k => $item) {
Yii::import($lv['templateForm']);
$newClass = Helper::explodeLast(".", $lv['templateForm']);
$new = new $newClass();
$new->attributes = $item;
$new->validate();
if ($new->hasErrors()) {
foreach ($new->errors as $name => $errors) {
$this->addError($name, implode("<br> • ", $errors));
}
}
}
}
}
}
}
示例2: render
/**
* render
* Fungsi ini untuk me-render layout
* @param array $layout
* @param array $sections
* @param array $model
* @param boolean $return
* @return mixed me-return sebuah layout
*/
public static function render($layout, $sections = null, $model = null, $return = false)
{
$formpath = @$sections['editor'] ? '//layouts/forms_editor/' : "//layouts/forms/";
if (count($sections) > 0) {
foreach ($sections as $k => $section) {
switch (@$section['type']) {
case "menu":
if (@$section['file'] == "") {
continue;
}
$options = ['title' => @$section['title'], 'icon' => @$section['icon'], 'sections' => $sections, 'options' => @$section['menuOptions'], 'inlineJS' => @$section['inlineJS']];
$mt = MenuTree::load($section['file'], $options);
if ($mt != null) {
$sections[$k]['content'] = $mt->render(false);
}
break;
case "form":
if (@$section['class'] == "") {
continue;
}
$fb = FormBuilder::load(@$section['class']);
if ($fb != null) {
$sections[$k]['content'] = $fb->render($model, ['renderInAjax' => true]);
}
break;
}
}
}
return Yii::app()->controller->renderPartial($formpath . $layout, $sections, $return);
}
示例3: actionRenderProperties
public function actionRenderProperties()
{
$properties = FormBuilder::load('RepoProperties');
if ($this->beginCache('RepoProperties', array('dependency' => new CFileCacheDependency(Yii::getPathOfAlias('application.forms.RepoProperties') . ".php")))) {
echo $properties->render();
$this->endCache();
}
}
示例4: actionCellTemplate
public function actionCellTemplate()
{
$postdata = file_get_contents("php://input");
$post = CJSON::decode($postdata);
$fb = FormBuilder::load($post['class']);
$field = $fb->findField(['name' => $post['name']]);
$this->attributes = $field;
$post['item'] = $this->processSingleColumn($post['item']);
echo $this->getRowTemplate($post['item'], $post['idx']);
}
示例5: actionSubform
public function actionSubform($c, $f)
{
Yii::import($c);
$class = Helper::explodeLast(".", $c);
$fb = FormBuilder::load($class);
$field = $fb->findField(['name' => $f]);
if (!!$field) {
$this->attributes = $field;
$this->renderSubForm();
}
}
示例6: renderSubForm
public function renderSubForm()
{
if ($this->subFormClass == get_class($this)) {
return '<center><i class="fa fa-warning"></i> Error Rendering SubForm: Subform can not be the same as its parent</center>';
} else {
## render
Yii::import($this->subForm);
$fb = FormBuilder::load($this->subFormClass);
$render = $fb->render($fb->model, ['wrapForm' => false]);
return $render;
}
}
示例7: actionResizeCol
public function actionResizeCol($col, $name, $size, $alias)
{
$fb = FormBuilder::load($alias);
$field = $fb->findField(['name' => $name]);
if (isset($field) && isset($field['columns'][$col])) {
if (!isset($field['columns'][$col]['options'])) {
$field['columns'][$col]['options'] = [];
}
$field['columns'][$col]['options']['width'] = $size;
}
$fields = $fb->updateField(['name' => $name], $field);
$fb->setFields($fields);
}
示例8: renderHtml
public function renderHtml()
{
Yii::import($this->subForm);
$class = $this->subFormClass;
if (!class_exists($class)) {
return '';
}
$model = new $class();
$fb = FormBuilder::load($class);
$html = '<div ng-controller="' . $this->ctrlName . 'Controller">';
if ($this->mode == 'single') {
$fb->fieldNameTemplate = '' . get_class($this->model) . '[' . $this->name . '][:name]';
}
$this->templateAttributes = $model->attributes;
$html .= $fb->render(null, ['wrapForm' => false]);
$html .= '</div>';
return $html;
}
示例9: formbuilder_maintain
function formbuilder_maintain($name)
{
// We need the object whether or not there are any questions in it
$formbuilder = new FormBuilder();
$formbuilder->load($name);
$data = $_POST['data'];
switch ($_POST['edit']['step']) {
// Generate confirmation page
case 'confirm':
// TODO generate the confirmation; for now, just save changes
//$rc = $formbuilder->perform_maintenance( $data );
//$rc .= $formbuilder->render_confirmation();
//break;
// TODO generate the confirmation; for now, just save changes
//$rc = $formbuilder->perform_maintenance( $data );
//$rc .= $formbuilder->render_confirmation();
//break;
case 'perform':
$rc = $formbuilder->perform_maintenance($data);
$rc .= $formbuilder->save(true);
$rc .= $formbuilder->render_maintenance();
break;
default:
$rc = $formbuilder->render_maintenance();
}
return $rc;
}
示例10: actionPreviewSQL
public function actionPreviewSQL()
{
$postdata = file_get_contents("php://input");
$post = json_decode($postdata, true);
$criteria = @$post['criteria'] ? $post['criteria'] : [];
$params = @$post['params'] ? $post['params'] : [];
$baseClass = $post['baseclass'];
switch ($baseClass) {
case "DataGrid":
case "DataFilter":
case "RelationField":
case "TextField":
$rel = 'currentModel';
$name = $post['rfname'];
$classPath = $post['rfclass'];
$modelClassPath = $post['rfmodel'];
$modelClass = Helper::explodeLast(".", $modelClassPath);
Yii::import($modelClassPath);
$class = Helper::explodeLast(".", $classPath);
Yii::import($classPath);
$model = new $modelClass();
$builder = $model->commandBuilder;
$fb = FormBuilder::load($classPath);
$field = $fb->findField(['name' => $name]);
$rf = new RelationField();
$rf->builder = $fb;
$rf->attributes = $field;
$rf->relationCriteria = $criteria;
$rf->params = $post['params'];
$criteria = $rf->generateCriteria('', []);
$criteria = new CDbCriteria($criteria);
break;
case "DataSource":
$rel = $post['rel'];
$name = $post['dsname'];
$classPath = $post['dsclass'];
$class = Helper::explodeLast(".", $classPath);
Yii::import($classPath);
$model = new $class();
$builder = $model->commandBuilder;
$fb = FormBuilder::load($classPath);
$fb->model = new $model();
$field = $fb->findField(['name' => $name]);
$ds = new DataSource();
$ds->attributes = $field;
$criteria = DataSource::generateCriteria($params, $criteria, $ds);
$criteria = SqlCriteria::convertPagingCriteria($criteria);
$criteria = new CDbCriteria($criteria);
break;
}
if (!isset($rel)) {
echo json_encode(["sql" => '', "error" => '']);
return false;
}
$isRelated = false;
if ($rel == 'currentModel') {
$tableSchema = $model->tableSchema;
} else {
$parent = $model::model()->find();
$relMeta = $model->getMetadata()->relations[$rel];
$relClass = $relMeta->className;
if (!is_subclass_of($relClass, 'ActiveRecord')) {
throw new CException("Class {$relClass} harus merupakan subclass dari ActiveRecord");
}
$tableSchema = $relClass::model()->tableSchema;
if (!is_null($parent)) {
$parentPrimaryKey = $parent->metadata->tableSchema->primaryKey;
switch (get_class($relMeta)) {
case 'CHasOneRelation':
case 'CBelongsToRelation':
if (is_string($relMeta->foreignKey)) {
$criteria->addColumnCondition([$relMeta->foreignKey => $parent->{$parentPrimaryKey}]);
$isRelated = true;
}
break;
case 'CManyManyRelation':
$parser = new PhpParser\Parser(new PhpParser\Lexer\Emulative());
$stmts = $parser->parse('<?php ' . $relMeta->foreignKey . ';');
$bridgeTable = $stmts[0]->name->parts[0];
$arg0 = $stmts[0]->args[0]->value->name->parts[0];
$arg1 = $stmts[0]->args[1]->value->name->parts[0];
$criteria->join .= " " . $relMeta->joinType . " {$bridgeTable} ON t.{$tableSchema->primaryKey} = {$bridgeTable}.{$arg1} ";
break;
case 'CHasManyRelation':
//without through
if (is_string($relMeta->foreignKey)) {
$criteria->addColumnCondition([$relMeta->foreignKey => $parent->{$parentPrimaryKey}]);
$isRelated = true;
}
//with through
//todo..
break;
}
}
}
$command = $builder->createFindCommand($tableSchema, $criteria);
$commandText = $command->text;
if ($isRelated) {
$commandText = str_replace(":ycp0", "\n" . '"{$model->' . $relMeta->foreignKey . '}"', $commandText);
}
//.........这里部分代码省略.........
示例11: doAfterSave
public function doAfterSave($withRelation = true)
{
$pk = $this->tableSchema->primaryKey;
if ($this->isNewRecord) {
$this->{$pk} = $this->dbConnection->getLastInsertID();
## this is hack
## UPDATE AUDIT TRAIL 'CREATE' ID
if (!!Yii::app()->user && !Yii::app()->user->isGuest) {
$a = $this->dbConnection->createCommand("\n update p_audit_trail set model_id = :model_id\n WHERE user_id = :user_id and\n model_class = :model_class and\n type = 'create' and\n model_id is null")->execute(['model_class' => ActiveRecord::baseClass($this), 'model_id' => $this->{$pk}, 'user_id' => Yii::app()->user->id]);
}
} else {
$this->deleteResetedRelations();
}
if ($withRelation) {
$this->saveRelation();
}
## handling untuk file upload
if (method_exists($this, 'getFields')) {
$fb = FormBuilder::load(get_class($this));
$uploadFields = $fb->findAllField(['type' => 'UploadFile']);
$attrs = [];
$model = $this;
foreach ($uploadFields as $k => $f) {
if (@$f['name'] == '' || @$f['uploadPath'] == '') {
continue;
}
## create directory
## Jika disini gagal, berarti ada yang salah dengan format uploadPath di FormBuilder-nya
$evalDir = '';
eval('$evalDir = "' . $f['uploadPath'] . '";');
$evalDir = str_replace(["\n", "\r"], "", $evalDir);
$repopath = realpath(Yii::getPathOfAlias("repo"));
$evalDirArr = explode("/", $evalDir);
foreach ($evalDirArr as $i => $j) {
$evalDirArr[$i] = preg_replace('/[\\/\\?\\:\\*\\"\\<\\>\\|\\\\]*/', "", $j);
}
$evalDir = implode("/", $evalDirArr);
$dir = $repopath . "/" . $evalDir . "/";
$dir = str_replace(["\n", "\r"], "", $dir);
if (!is_dir($dir)) {
mkdir($dir, 0777, true);
}
## get oldname
$old = $this->{$f['name']};
$ext = pathinfo($old, PATHINFO_EXTENSION);
$filename = pathinfo($old, PATHINFO_FILENAME);
if (@$f['filePattern']) {
## get newname
## Jika disini gagal, berarti ada yang salah dengan format filePattern di FormBuilder-nya
eval('$newname = "' . $f['filePattern'] . '";');
} else {
$newname = $filename . "." . $ext;
}
$new = $dir . preg_replace('/[\\/\\?\\:\\*\\"\\<\\>\\|\\\\]*/', "", $newname);
$new = str_replace(["\n", "\r"], "", $new);
## delete file if already exist and allowed to overwrite
if (is_file($new) && $f['allowOverwrite'] == 'Yes' && is_file($old)) {
unlink($new);
}
if (!is_file($new) && is_file($old)) {
rename($old, $new);
$this->{$f['name']} = trim($evalDir, "/") . "/" . $newname;
if ($this->hasAttribute($f['name'])) {
$attrs[] = $f['name'];
}
}
}
if (count($attrs) > 0) {
if ($this->isNewRecord) {
$this->isNewRecord = false;
$this->updateByPk($this->id, $this->getAttributes($attrs));
$this->isNewRecord = true;
} else {
$this->update($attrs);
}
}
}
return true;
}
示例12:
<?php
FormField::$inEditor = false;
?>
<div class="properties-header">
<div ng-if="propMsg != 'Loading Field'">
<i class="fa fa-file-text"></i>
Form Properties
</div>
<div ng-if="propMsg == 'Loading Field'">
<i class="fa fa-spin fa-refresh"></i> Loading Field...
</div>
</div>
<div ui-content style="padding:6px 5px 0px 10px;">
<?php
$fp = FormBuilder::load('DevFormProperties');
echo $fp->render($fb->form);
?>
</div>
<?php
FormField::$inEditor = true;
示例13: actionUpdate
public function actionUpdate($class)
{
FormField::$inEditor = true;
$isPHP = Helper::explodeLast(".", $class);
$class = $isPHP == "php" ? substr($class, 0, -4) : $class;
$class = FormBuilder::classPath($class);
$this->layout = "//layouts/blank";
## reset form builder session
FormBuilder::resetSession($class);
## load form builder class and session
$fb = FormBuilder::load($class);
$fb->resetTimestamp();
$fb->updateExtendsFrom('Blog');
$classPath = $class;
$class = Helper::explodeLast(".", $class);
if (is_subclass_of($fb->model, 'ActiveRecord')) {
$formType = "ActiveRecord";
FormsController::setModelFieldList($class::model()->getAttributesList(), "AR", $class);
} else {
if (is_subclass_of($fb->model, 'FormField')) {
$formType = "FormField";
$mf = new $class();
FormsController::setModelFieldList($mf->attributes, "FF");
} else {
if (is_subclass_of($fb->model, 'Form')) {
$formType = "Form";
$mf = new $class();
FormsController::setModelFieldList($mf->attributes, "FF");
}
}
}
$fieldData = $fb->fields;
FormsController::$modelField = $fieldData;
$toolbar = $this->renderAllToolbar($formType);
Yii::import('application.modules.' . $fb->module . '.controllers.*');
echo $this->render('form', array('fb' => $fb, 'class' => $class, 'classPath' => $classPath, 'formType' => $formType, 'moduleName' => Helper::explodeFirst(".", $classPath), 'toolbarData' => @$toolbar['data'], 'fieldData' => $fieldData), true);
}
示例14: doAfterSave
public function doAfterSave($withRelation = true)
{
$pk = $this->tableSchema->primaryKey;
if ($this->isNewRecord) {
$this->{$pk} = $this->dbConnection->getLastInsertID();
## this is hack
## UPDATE AUDIT TRAIL 'CREATE' ID
if (!!Yii::app()->user && !Yii::app()->user->isGuest) {
$a = $this->dbConnection->createCommand("\n update p_audit_trail set model_id = :model_id\n WHERE user_id = :user_id and\n model_class = :model_class and\n type = 'create' and\n model_id is null")->execute(['model_class' => ActiveRecord::baseClass($this), 'model_id' => $this->{$pk}, 'user_id' => Yii::app()->user->id]);
}
} else {
$this->deleteResetedRelations();
}
if ($withRelation) {
foreach ($this->__relations as $k => $new) {
if ($k == 'currentModel') {
$rel = new CHasManyRelation('currentModel', get_class($this), 'id');
} else {
$rel = $this->getMetaData()->relations[$k];
}
$relClass = $rel->className;
if (!class_exists($relClass)) {
continue;
}
$relType = get_class($rel);
$relForeignKey = $rel->foreignKey;
$relTableModel = $relClass::model();
$relTable = $relTableModel->tableName();
$relPK = $relTableModel->metadata->tableSchema->primaryKey;
switch ($relType) {
case 'CHasOneRelation':
case 'CBelongsToRelation':
if (!empty($new)) {
$relForeignKey = $rel->foreignKey;
if ($this->{$relForeignKey} == $new[$relPK]) {
$model = $relClass::model()->findByPk($this->{$relForeignKey});
if (is_null($model)) {
$model = new $relClass();
}
if (array_diff($model->attributes, $new)) {
$model->attributes = $new;
if ($relType == 'CHasOneRelation') {
$model->{$relForeignKey} = $this->{$pk};
}
$model->save();
}
} else {
$this->loadRelation($rel->name);
}
}
break;
case 'CManyManyRelation':
case 'CHasManyRelation':
## if relation type is Many to Many, prepare required variable
$relMM = [];
if ($relType == 'CManyManyRelation') {
$parser = new PhpParser\Parser(new PhpParser\Lexer\Emulative());
$stmts = $parser->parse('<?php ' . $relForeignKey . ';');
if (count($stmts) > 0) {
$relMM = ['tableName' => $stmts[0]->name->parts[0], 'from' => $stmts[0]->args[0]->value->name->parts[0], 'to' => $stmts[0]->args[1]->value->name->parts[0]];
}
}
## Handle Insert
if (isset($this->__relInsert[$k])) {
if ($k != 'currentModel') {
if (is_string($relForeignKey)) {
## without through
if ($relType != 'CManyManyRelation') {
foreach ($this->__relInsert[$k] as $n => $m) {
$this->__relInsert[$k][$n][$relForeignKey] = $this->{$pk};
}
}
} else {
if (is_array($relForeignKey)) {
## with through
foreach ($this->__relInsert[$k] as $n => $m) {
foreach ($relForeignKey as $rk => $fk) {
$this->__relInsert[$k][$n][$fk] = $this->__relations[$rel->through][$rk];
}
}
}
}
}
if (count($this->__relInsert[$k]) > 0) {
if ($relType == "CHasManyRelation") {
ActiveRecord::batchInsert($relClass, $this->__relInsert[$k]);
}
## if current relation is many to many
if ($relType == 'CManyManyRelation' && !empty($relMM)) {
$manyRel = [];
foreach ($this->__relInsert[$k] as $item) {
$manyRel[] = [$relMM['from'] => $this->{$pk}, $relMM['to'] => $item[$relPK]];
}
## if relinsert is already exist, then do not insert it again
foreach ($this->__relInsert[$k] as $insIdx => &$ins) {
if (!!@$ins[$relPK]) {
unset($this->__relInsert[$k]);
}
}
ActiveRecord::batchInsert($relClass, $this->__relInsert[$k]);
//.........这里部分代码省略.........
示例15: array
<?php
FormField::$inEditor = false;
?>
<div class="properties-header">
<div class='btn btn-default btn-xs pull-right '
ng-click='unselectLayout();'>
<i class='fa fa-times'></i>
Close
</div>
<i class = "fa fa-file-text"></i>
Form Layout <span class="label label-default">{{layout.name | uppercase }}</span>
</div>
<div ui-content style="padding:6px 0px 0px 0px;">
<?php
$fpl = FormBuilder::load('DevFormLayoutProperties', array('module' => $fb->module));
echo $fpl->render();
?>
</div>
<?php
FormField::$inEditor = true;