ATK4自动完成问题

时间:2014-04-22 12:30:41

标签: php file autocomplete atk4 missing-data

我是ATK4的新手。 我试图实现自动填充字段,但是当我尝试定义字段时,我只有一个错误。 我用ATK4的最后一个版本(4.2.4)在MAC上运行。所有其他函数(字段类型)似乎都运行良好,但是当我定义自动填充类型的字段时,我得到了我在示例中看到的相同错误:http://codepad.agiletoolkit.org/autocomplete

案例是我定义了一个模型:

class Model_Agenda extends Model_Table {
    public $entity_code='Agenda';
    function init(){
        parent::init();

        $this->addField('DATE');
        $this->addField('TIME');
        $this->addField('DRIVERID');
        $this->addField('STUDENTID');
        $this->hasOne('STUDENTID')->display(array('form'=>'autocomplete/Basic'));

    }
}

然后在我的页面上:

    $form = $this->add('Form');
    $form->addField('ReadOnly','Date')->Set($_GET['date']);
    $form->addField('ReadOnly','Time')->Set($_GET['time']);
    $form->addField('ReadOnly','Driver')->Set($_GET['driverid']);       
    $client=$form->addField('autocomplete','studentid');

简单的东西,但没有,我无法获得自动填充字段,我得到一个错误,说" autocomplete.php"不存在(实际上文件不存在,我尝试下载github模块,但该模块包含此文件),无论如何我得到的错误是:

Exception_PathFinder,代码:0

其他信息:

file: Form/Field/Autocomplete.php
type: php
attempted_locations:
0: /Library/WebServer/Documents/rutas/lib/Form/Field/Autocomplete.php
1: /Library/WebServer/Documents/rutas/atk4/lib/Form/Field/Autocomplete.php
2: /Library/WebServer/Documents/rutas/atk4-addons/mvc/Form/Field/Autocomplete.php
3: /Library/WebServer/Documents/rutas/atk4-addons/misc/lib/Form/Field/Autocomplete.php
class: Form_Field_Autocomplete
namespace:
orig_class: Form_Field_Autocomplete
/Library/WebServer/Documents/rutas/atk4/lib/PathFinder.php:207

有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

您正在谈论此附加组件,对:https://github.com/atk4/autocomplete

看起来像PathFinder的问题无法找到命名空间插件的适当位置。 请在此处发布您的API_Frontend类的一部分,其中您将其他位置添加到路径查找器,并告诉我有关您的文件夹结构的更多信息(在哪个文件夹中放置了自动完成附加文件)。

ATK 4.2.4版本不是最后一个。你能尝试将ATK升级到版本4.2.5吗?它没有正式发布,但可以在GitHub主分支中找到:https://github.com/atk4/atk4? 我希望一切都适用于4.2.5版本,但如果没有,那么我会帮你解决这个问题。

还有一件事 - 如果您手动创建表单字段,则需要为该$ client字段设置Model。我想可以使用$ client-> setModel(' Agenda');


编辑:正确答案

排队

$client=$form->addField('autocomplete','studentid');

您应该使用以下命名空间编写完整的自动填充字段类名称:

$client=$form->addField('autocomplete/Basic', 'studentid');

还需要注意的是使用小写函数名称。因此,而不是Set()使用set()