【问题标题】:how to insert data after some some logical operation in grocery crud如何在杂货杂货中进行一些逻辑操作后插入数据
【发布时间】:2014-02-20 06:01:26
【问题描述】:

我对杂货杂货很陌生。我在 insert_before_callback 上的逻辑操作遇到了一些问题

我有一个产品表,当我出售产品时,它会检查产品的可用性。如果它可用,那么它将把它插入到数据库中

        $crud = new grocery_CRUD();
    //$crud->set_subject('Guards');
    $this->grocery_crud->set_table('chalan')
        ->set_subject('Chalan')
        //->fields('Date','cid','pid','voucher','qnty','Amount','Paid Amount','Due Amount','Remarks')
        ->columns('cdate','cid','eid','pid','voucher','qnty','price','Amount','paid','Due Amount','Check','remark')
        ->display_as('cdate','Date')
        ->display_as('check','Check')
        ->display_as('cid','Customer Name')
        ->display_as('voucher','Chalan No.')
        ->display_as('eid','Employee Name')
        ->display_as('pid','Item Name')
        ->display_as('qnty','Quantity')
        ->display_as('price','Price')
        ->display_as('remark','Remark')
        ->set_relation('eid','employee','name')
        ->set_relation('cid','Customer','name')
        ->set_relation('pid','product','name')
        ->callback_column('Amount',array($this,'_total_amount'))
        ->callback_column('Due Amount',array($this,'_due_amount'))
        ->set_rules('qnty','Quantity','numeric')
        ->set_rules('eid','Employee','String')
        ->set_rules('pid','Product','String')
        ->set_rules('qnty','Quantity','numeric')
        ->set_rules('cdate','Date','date')
        ->callback_before_insert(array($this,'_checkAvaiability'))
        ->unset_delete();
    //$crud->display_as('sec_guard_master_id','Guard Name');
    $output = $this->grocery_crud->render();
    //$data['viewName']="welcome";
    $this->load->view('search',$output);

这是我对 _checkAvaiability 的逻辑

function _checkAvaiability($post_array){
    $total=100; // just for test
    if($post_array['qnty']>$total){
        return false;
    }
}

它在没有任何过滤的情况下运行,并且总是插入数据,尽管产品超过了总值。如果有人解决这个问题,这将非常有帮助

【问题讨论】:

    标签: php mysql codeigniter-2 grocery-crud


    【解决方案1】:

    请注意,callback_before_insert 没有在您返回 false 时停止插入的行为(实际上,此回调必须返回一个数组,其中包含将在回调之后发生的插入操作中使用的值) s 处理)。

    如果您在插入之前需要一些逻辑验证(为了不允许它根据您的逻辑执行),您可以做两件事:

    1) 创建自定义验证规则并使用set_rules 添加它 http://www.grocerycrud.com/documentation/options_functions/set_rules

    我认为这可能更容易做到

    2) 您可以使用callback_insert 实现完全自定义的插入操作。 这个回调逃脱了 CRUD 的自动插入,并且只运行插入的回调。

    http://www.grocerycrud.com/documentation/options_functions/callback_insert

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多