十月 CMS |是否可以禁用某些行的复选框或隐藏某些行?

October CMS | Is it possible to disable checkboxes for certain rows or hide certain rows?

我正在创建一个插件,允许人们添加自己的付款状态和付款方式。我的付款状态模型中有两个值,我在仪表板中使用的报告小部件需要这两个值。

我的问题是,是否可以隐藏或简单地禁用复选框,以便其他用户无法删除它们?我知道如果他们真的想要,他们总是可以从 phpMyAdmin 中删除它,但我想让它尽可能困难。

举个例子,我对照片进行了编辑:

我使用 Seeder 在安装时创建内容:

use Vektar\Crm\Models\AddPaymentStatus as PaymentStatus;
use Seeder;

class CreateVektarCrmSeeder extends Seeder
{
    public function run()
    {
        $paymentstatuspaid = PaymentStatus::create([
            'add_payment_status' => 'Paid'
        ]);

        $paymentstatusunpaid = PaymentStatus::create([
            'add_payment_status' => 'Unpaid'
        ]);

    }
}

付款状态Table:

<?php namespace Vektar\Crm\Updates;

use Schema;
use October\Rain\Database\Updates\Migration;

class CreateMartinsmithMsAddPaymentStatus extends Migration
{
    public function up()
    {

        if (!Schema::hasTable('vektar_crm_add_paymentstatus')) {
            Schema::create('vektar_crm_add_paymentstatus', function ($table) {
                $table->engine = 'InnoDB';
                $table->increments('id');
                $table->integer('job_id')->nullable();
                $table->text('add_payment_status')->nullable();
            });
        }
    }

    public function down()
    {
        Schema::dropIfExists('vektar_crm_add_paymentstatus');
    }
}

所以我想出了一个办法。

我做的第一件事是在 controllers/addpaymentstatus/config_filter 中添加以下内容:

scopes:
  filterJobStatus:
    label: Job Statuses
    modelClass: Vektar\Crm\Models\AddPaymentStatus
    type: checkbox
    default: 1
    conditions: is_hidden <> true

在我的数据库中,我添加了以下列:

$table->boolean('is_hidden')->nullable()->default(0);

在我的播种机中,我添加了:

class CreateVektarCrmSeeder extends Seeder
{
    public function run()
    {
        $paymentstatuspaid = PaymentStatus::create([
            'add_payment_status' => 'Paid',
            'is_hidden' => true
        ]);

        $paymentstatusunpaid = PaymentStatus::create([
            'add_payment_status' => 'Unpaid',
            'is_hidden' => true
        ]);

    }
}

在这个阶段,我通过播种机添加的值随后被过滤掉并且在我的列表中不可见,但是,这并不能阻止用户简单地取消过滤列表所以我然后添加以下内容到控制器我想从以下位置删除过滤器状态菜单:

public function index()
{
    $this->asExtension('ListController')->index();
}

然后我在控制器中添加了一个名为 _list_container.htm 的文件。

然后我们手动渲染列表的各个部分:

<?php if ($toolbar): ?>
    <?= $toolbar->render() ?>
<?php endif ?>

<div class="row row-flush">
    <div class="col-sm-12 list-with-sidebar">
        <?= $list->render() ?>
    </div>
</div>

这只会加载工具栏和我的列表,但如果您想通过此方法呈现过滤器,则我们需要添加:

<?php if ($filter): ?>
    <?= $filter->render() ?>
<?php endif ?>

我希望这对任何想做类似事情的人有所帮助。