我正在使用OctoberCMS,Apache和PHP7。
我使用Builder创建了一个自定义插件。
我能够添加记录,一切正常。除非我按下Reorder records
按钮,否则会显示空记录列表。
是否有关于如何设置的指南?
我在看:
https://octobercms.com/docs/database/traits#nested-tree
https://octobercms.com/docs/api/october/rain/database/traits/nestedtree
我添加到模型中:
use \October\Rain\Database\Traits\NestedTree;
到数据库列:
parent_id
,nest_left
,nest_right
,nest_depth
。
我在哪里放$table->integer('parent_id')->nullable();
?
如果我把它放在模型中,它会给出错误Parse error: syntax error, unexpected '$table' (T_VARIABLE), expecting function (T_FUNCTION)
。
记录
重新订购记录:空清单
答案 0 :(得分:1)
首先,您不需要使用nestable
,因为我们没有处理trees
,而且似乎有一个指南,但它很简短。
我们可以很高兴\October\Rain\Database\Traits\Sortable
进行排序,因为我们不需要tree
我们可以跳过添加这些
use \October\Rain\Database\Traits\NestedTree;
parent_id, nest_left, nest_right, nest_depth
如果我们使用sort_order
,您需要一个特定的列名trait
,但如果我们需要,我们可以通过在const SORT_ORDER = 'my_sort_order';
中定义model
来更改此内容。
由于您已经构建了表格,因此可以update your table definition using builder plugin
并在表格中添加sort_order
字段。
或手动您可以使用此脚本并将其添加到
version.yaml
文件[plugins \ hardiksatasiya \ demotest \ updates(分别在您的插件中)]
<强> version.yaml 强>
1.0.19:
- 'Updated table hardiksatasiya_demotest_sorting'
- builder_table_update_hardiksatasiya_demotest_sorting_3.php
<强> builder_table_update_hardiksatasiya_demotest_sorting.php 强>
<?php namespace HardikSatasiya\DemoTest\Updates;
use Schema;
use October\Rain\Database\Updates\Migration;
class BuilderTableUpdateHardiksatasiyaDemotestSorting extends Migration
{
public function up()
{
Schema::table('hardiksatasiya_demotest_sorting', function($table)
{
$table->integer('sort_order')->default(0)->change();
});
}
public function down()
{
Schema::table('hardiksatasiya_demotest_sorting', function($table)
{
$table->integer('sort_order')->default(null)->change();
});
}
}
现在,将Trait添加到您的模型
<?php namespace HardikSatasiya\DemoTest\Models;
use Model;
/**
* Model
*/
class Sort extends Model
{
use \October\Rain\Database\Traits\Validation;
use \October\Rain\Database\Traits\Sortable;
....
现在,您可以手动添加所有需要的文件,也可以使用构建器工具。
我更喜欢使用Builder添加控制器和所需文件
请务必勾选
Reorder behavior
要在重新排序列表中显示名称,我们需要将此属性
from which field we need to derive a name
设置为在排序列表中显示。
使用
,它看起来像这样name
作为排序属性名称
侧面菜单[plugin.yaml和controllers]
如果您有其他疑问,请发表评论。