我正在创建一个插件,允许人们添加自己的付款状态和付款方式。付款状态模型中有两个值,我需要在仪表板中使用的reportwidget。
我的问题是,是否可以隐藏或简单地禁用复选框,以使其他用户无法删除这些复选框?我知道他们是否真的想要始终将其从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'
]);
}
}
付款状态表:
<?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');
}
}
答案 0 :(得分:1)
所以我想出了一种方法。
我做的第一件事是在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 ?>
我希望这对希望做类似事情的人有所帮助。