octobercms - 具有可重新分配变量/动态状态的十月 CMS 插件
问题描述
我正在尝试创建一个十月 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。有没有办法做到这一点?在方法中重新分配对象参数似乎什么都不做,似乎我只使用函数的本地范围和对象的初始设置值,并且我没有任何持久性可以使用。
解决方案
推荐阅读
- laravel - 使用 JWT auth 测试端点时如何发出多个请求
- javascript - FabricJS Canvas 上的强制更新
- java - 多次调用platform.runlater javafx
- python - 如何将3维图片灰度的形状更改为4维
- laravel - Laravel 7.x:PDOException:SQLSTATE [22P02]:无效的文本表示:7 错误:bigint 类型的输入语法无效
- scala - 如何在scala中解析地图列表
- swift - 如何在更改嵌套数组时重新渲染?
- python - 在 Windows 上获取本地时区名称(Python 3.9 zoneinfo)
- javascript - 从两个现有数组中创建一个新数组,使用 Javascript 按 id 过滤
- node.js - 在 Nodejs/Angular 本地应用程序中使用 Oauth 的 Cors 问题