Agiletoolkit:Autocomplete / Plus错误:null模型

时间:2013-08-17 11:14:24

标签: jquery-ui-autocomplete atk4

我正在尝试在敏捷工具包中使用自动完成插件(我对此仍然非常新,但它似乎非常适合我的需求)。自动完成基本工作,但当我使用加号并按加号按钮时,我得到一个连接到没有模型集的错误。在Plus源中应该使用自我模型 - 但我不明白我应该如何设置自动完成表单的模型。

这是堆栈跟踪的重要部分,我认为:

  • Frontend_page_form:Form-> setModel(Null)
  • Frontend_createquestions_form_question_id: 自动填充\ Form_Field_Plus->自动填充{闭合}(对象(页))

这是我的模特:

class Model_QuestionInCollection extends Model_Table {
public $entity_code='questionincollection';
function init(){
    parent::init();
    $this->hasOne('Question')->display(array('form'=>'autocomplete/Plus'));

这是代码:

$form=$this->add('Form');
$form->setModel('QuestionInCollection');

---编辑

我最终在自动完成中更改了模型,现在它可以工作,显示原始“$ self->模型”中出现了问题 - 但当然不能一概而论。我做了一些额外的更改(以使新记录显示在自动完成字段中),因此Autocomplete / Plus现在是这样的:

<?php
namespace autocomplete;

class Form_Field_Plus extends Form_Field_Basic
{
  function init()
  {
    parent::init();
    $self = $this;

    $f = $this->other_field;

    // Add buttonset to name field
    $bs = $f->afterField()->add('ButtonSet');

    // Add button - open dialog for adding new element
    $bs->add('Button')
        ->set('+')
        ->add('VirtualPage')
        ->bindEvent('Add New Record', 'click')
            ->set(function($page)use($self) {
        $model=$this->add('Model_Question');
        $form = $page->add('Form');
                $form->setModel($model); //Was: $self->model
                //Would be nice if it worked...: $form->getElement($model->title_field)->set($self->other_field->js()->val());
                if ($form->isSubmitted()) {
                    $form->update();
                    $js = array();
                    $js[] = $self->js()->val($form->model[$model->id_field]);
                    $js[] = $self->other_field->js()->val($form->model[$model->title_field]);
                    $form->js(null, $js)->univ()->closeDialog()->execute();
                }
            });
}

}

1 个答案:

答案 0 :(得分:0)

以下是使用自动填充的示例:http://codepad.demo.agiletech.ie/interactive-views/autocomplete

您可以手动创建表单并使用Model链接该字段。

如果工作正常,您可以继续尝试并让自己的示例正常工作。看起来没问题,应该在理论上有效。