我正在尝试使用可以更改和更新的变量来创建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。有什么方法可以实现?在方法中重新分配对象参数似乎无济于事,似乎我只在使用该函数的局部作用域和该对象的初始设置值,而且我没有任何持久性可使用。