具有可重新分配的变量/动态状态的October CMS插件

时间:2019-07-14 02:36:01

标签: octobercms

我正在尝试使用可以更改和更新的变量来创建October CMS插件。该应用程序使用API​​进行预订服务,因此我要保留的“状态”是购物车中的商品,同时客户应继续搜索可用的商品并添加它们,而插件“记住”什么是存储在购物车中。将商品添加到购物车时,插件必须记住购物车中已经存在的内容,而不仅是要添加的内容。我找不到在插件组件中存储信息的任何方法。我不想使用数据库/模型来存储数据,因为它只能临时存储。

我试图在类定义中重新分配变量而没有成功,并且我试图在页面中引用变量没有成功。

$current_value = $this->page['var']; //returns nothing

但是我无法对此进行任何引用,我只能设置页面变量,而不能读取它们。

我的Plugin.php文件:     

use Cms\Classes\ComponentBase;
class MyPlugin extends ComponentBase
{
    public $var;
    public $var_new;

    public function componentDetails()
    {...}
    public function defineProperties()
    {...}
    public function init()
    {
      $this->var = "value 1";
      $this->var_new = "value 2";
    }
    public function onAddItem()
    {
      $this->page['var'] = $this->var_new;
      $this->var_new = "value 3";
    }

我的default.htm文件:

{% set var = __SELF__.var %}

<form  data-request="{{__SELF__}}::onAddItem" data-request-update="'{{__SELF__}}::update': '#retrieved_events'">
  <input type="submit" value="Update Value">
</form>

<ul id="retrieved_events">
  {% partial __SELF__~'::update'  var=var %}
</ul>

我的update.htm文件:

<p>{{var}}</p>

当页面加载时,页面上“ var”的初始值为“ value 1”,正如我期望的那样。然后,我单击提交按钮并将其更改为“值2”,然后再次单击该按钮,该值应为“值3”,但是其仍为值2。有什么方法可以实现?在方法中重新分配对象参数似乎无济于事,似乎我只在使用该函数的局部作用域和该对象的初始设置值,而且我没有任何持久性可使用。

0 个答案:

没有答案