当我在管理控制台中创建GridField时 - 一切正常 - 我通过经典方法(例如Member :: get() - 或通过ArrayList填充gridfield -当不在公共函数中时,ArrayList不会填充ArrayList getCMSFields
$al1 = new ArrayList();
$records = DB::query("SELECT * from Member where id<10");
while ($rec = $records->next()) {
$al1->push(new ArrayData($rec));
}
$grid = new GridField('Pages', 'All pages', $al1)
两种方法都 但是工作确定,如果我尝试的用户页面上创建GridField - - 的形式呈现 - - 莫名其妙的第二个方法(其中GridField应该由ArrayList的填充 - 不工作)。
$gridField = new GridField('pages1', 'All pages1', Member::get(), $config);
- 炒锅好的,但米ethod在那里我创建的ArrayList老式的方法:
$al = new ArrayList();
$records = DB::query("SELECT * from Member where id<10");
while ($rec1 = $records->next()) {
$al->push(new ArrayData($rec));
}
我得到一个错误,当我试图通过渲染gridfield:
return new Form($this, "AllSubmissions", new FieldList($gridField), new FieldList());
的错误,我得到的是:
[警告]缺少ArrayData :: _ construct()GET/ss340/gridfield-test/gridfield-underr-grid/Line 27中的ArrayData ::参数1:C:\ wamp \ www \ ss340 \ framework \ view \ ArrayData.php
因为我需要外部数据库的数据来填充非管理页面上的网格,所以我非常渴望为此获得解决方案。 如果有人可以提供替代方法来显示/编辑Silverstripe中的表格数据 - 非常感谢。
我很欣赏你的努力 - 但正如前面提到的,我想用外部数据库的数据填充GridField,所以我不能使用ORM方法。我确实打开了error_reporting并发布了关于错误的答案。然而 - 仍然没有意识到我可以使用经典方法在管理部分填充网格字段,但不能在用户部分填充。问候 – Grega
我更新了我的答案。通过代码,您可以在数据库之间切换。 –