OctoberCMS - 如何在组件内调用函数

Posted

技术标签:

【中文标题】OctoberCMS - 如何在组件内调用函数【英文标题】:OctoberCMS - How to call a function inside a component 【发布时间】:2018-04-12 14:15:51 【问题描述】:

我正在建立一个订单,我提前警告你我是后端开发的菜鸟:)

所以我的第一个组件从订单中获取所有数据并将其保存到数据库中,然后我使用相同的数据生成报价。在此之后,如果报价被接受,我将生成发票的第三部分,到目前为止,我的代码如下所示:

// this runs when order is submitted on front end (runs from same component)
public function onAddOrder() 
    $this->submitOrder();
    $this->submitQuote();
    Flash::success('Order successfully submitted!');
    return Redirect::to('/home');


public function submitOrder() 
        // Add it to the database
        $order = new Order();
        $order ->quote_no = $this->generateQuoteNo();
        $order ->company_name = Input::get('company_name');
        $order ->client_name = Input::get('client_name');
        $order ->client_email = Input::get('client_email');
        $order ->emergency_contact = Input::get('emergency_contact');
        $order ->due_date = Input::get('due_date');
        $order ->project_name = Input::get('project_name');
        $order ->quote_query = Input::get('quote_query');
        $order ->order_no = Input::get('order_no');
        $order ->order_type = Input::get('order_type');
        $order ->save();
    


public function submitQuote() 
    $quote = new Quote();
    $quote->quote_no = $this->generateQuoteNo();
    $quote->customer = Input::get('company_name');
    $quote->job_name = Input::get('project_name');
    $quote->order_no = Input::get('order_no');
    $quote->proof_price = $this->calculateProofPrice();
    $quote->sub_total = $this->calculateSubTotal();
    $quote->vat = $this->calculateVat();
    $quote->total = $this->calculateTotal();
    $quote->save();        

这很好用,但是如果进行了选择,我想运行另一个函数,但是这个组件在不同的类下,我不知道如何引用它。

if (Input::get('quote_query') === 'Order') 
        $this->AcmeInvoice->onSubmitInvoice();
    

如果有人可以帮助我启动公共函数 onSubmitInvoice(),我将不胜感激。

【问题讨论】:

你可以在类中实例化对象并将其关闭?例如:$invoice = new AcmeInvoice(); //如果不在命名空间中,则添加命名空间; $invoice->onSubmitInvoice(); 谢谢伪,这工作但似乎并没有触发整个功能,它创建一个新发票但不填充任何列。我的第三个函数如下所示:public function onSubmitInvoice() $invoice = new Invoice(); $invoice->quote_no = post('quote_no'); $invoice->customer = $this->customer(); $invoice->sub_total = $this->sub_total(); $invoice->vat = $this->vat(); $invoice->total = $this->total(); $invoice->save(); 这里没有运行 那是因为你没有在函数中传递任何值。调用该函数时,需要使用 $invoice->onSubmitInvoice(values);最好将其作为数组传递并访问数组以保存值 非常感谢!! @Gareth 我会要求您将您的答案与解决方案一起提出,如果您解决了这个问题,请将此问题标记为已解决,因为如果他们卡在某个地方,它将帮助其他用户类似的情况。谢谢 【参考方案1】:

您可以在类中实例化对象并将其关闭吗?例如:$invoice = new AcmeInvoice(); //如果不在命名空间中,则添加命名空间; $invoice->onSubmitInvoice();

 if (Input::get('query') === 'Invoice') 
            $invoice = new AcmeInvoice();
            $invoice->onSubmitInvoice('quote_no');
        

【讨论】:

您可能应该在答案中包含更多内容 - 因为它很短,所以它进入了“低质量帖子”审核队列。

以上是关于OctoberCMS - 如何在组件内调用函数的主要内容,如果未能解决你的问题,请参考以下文章

你如何在 OctoberCMS 的局部渲染组件?

在 OctoberCMS 中如何找到提示路径?

Angular2:如何从子组件调用主组件功能

OctoberCMS:如何仅将 javascript 从组件添加到页面一次

如何在反应路由器内的任何路由上调用函数?

react-native 和 yarn 工作区的“钩子只能在函数组件的主体内调用”错误