通过AJAX更新实体/发布数据? -- 8 领域 和 ajax 领域 drupal 相关 的问题

Updating entities/posting data via ajax?


0
vote

问题

中文

我有一个需要更新用户交互的实体,例如:

  1. 跟踪用户通过视频进行进度,使得侦听器每x秒检查播放头位置,并将信息发布到包含该视频上的用户在该视频上的进度的数据的实体。

  2. 复选框的集合,当单击时,自动更新相关实体上相应值的状态。为了参数,我尚不知道这是否是实际实体表单或通用形式/组形式。

在过去我尝试过#1通过具有隐藏的ajax的表单,其字段值是每x秒更新的字段值,并且自动单击此x秒和提交按钮,但这导致某些困难/不可能的iOS用户的划分的ajax错误调试。理想情况下,我想我想绕过那里的形式。我知道如何设置js来跟踪数据,但我不确定如何从前端传递到Drupal。我认为我想做这样的事情(通过 http://hayageek.com/jquery- ajax-post / ),但不确定如何确定 AJAX_POST_URL 或如何格式化数据。

  $.ajax({     url : "AJAX_POST_URL",     type: "POST",     data : formData,     success: function(data, textStatus, jqXHR)     {         //data - response from server     },     error: function (jqXHR, textStatus, errorThrown)     {      } });   

for#2,我想在复选框时通过ajax拥有autosubmits的形式可能就足够了,但是给出了我上面的杂项错误,我很好奇是否有更好的方法处理它。

很高兴如需要更新此问题,如果它被视为过于通用。

英文原文

I've got a handful of entities that need to updated on user interaction, such as:

  1. Tracking user progress through a video, such that a listener checks playhead position every x seconds and posts information to an entity containing data on that user's progress on that video.

  2. A collection of checkboxes that, when clicked, automatically update the state of a corresponding value on a related entity. For the sake of argument, I don't yet know if this will be the actual entity form or a generic form/set of forms.

In the past I attempted #1 by having a hidden, ajax-enabled form whose field values were updated every x seconds and the submit button automatically clicked, but this caused assorted ajax errors for some iOS users that were difficult/impossible to debug. Ideally I think I'd like to bypass having a form there at all. I know how to setup the js to track the data, but I'm not sure how to then pass it along to Drupal from the front-end. I'd assume I want to do something like this (via http://hayageek.com/jquery-ajax-post/), but not sure exactly how to determine the AJAX_POST_URL or how the data should be formatted.

$.ajax({     url : "AJAX_POST_URL",     type: "POST",     data : formData,     success: function(data, textStatus, jqXHR)     {         //data - response from server     },     error: function (jqXHR, textStatus, errorThrown)     {      } }); 

For #2, I suppose it might be enough to just have a form that autosubmits via ajax when the checkbox is clicked, but given the misc errors I hit above I'm curious whether or not there might be a better way to handle it.

Happy to update this issue as needed if it's deemed too generic.

     

回答列表

1
 
vote
vote
最佳答案
 

Ajax回调URL将是您在模块中定义的路由。该路由将调用一个控制器,该控制器可选择返回AjaxResponse。首先定义路线。

example.routing.yml:

  example.ajax_callback:   path: '/example/ajax'   defaults:     _controller: 'DrupalexampleControllerAjaxController::ajaxCallback'   requirements:     _permission: 'some permission'   

在$ .ajax()呼叫中设置的路径在上面设置。

然后创建控制器:

示例/ src / controller / ajaxcontroller.php:

  namespace DrupalexampleController;  use DrupalCoreAjaxAjaxResponse; use DrupalCoreControllerControllerBase;  class AjaxController extends ControllerBase {    public function ajaxCallback($nid, $key, $value) {     $node = Drupal::entityTypeManager()->getStorage('node')->load($nid);     $node->set($key, $value);      return new AjaxResponse(['success' => TRUE]);   } }   
 

The AJAX callback URL will be a route you define in a module. The route will call a controller, which can optionally return an AjaxResponse. First define the route.

example.routing.yml:

example.ajax_callback:   path: '/example/ajax'   defaults:     _controller: '\Drupal\example\Controller\AjaxController::ajaxCallback'   requirements:     _permission: 'some permission' 

The path to set in your $.ajax() call is set above.

Then create the controller:

example/src/Controller/AjaxController.php:

namespace Drupal\example\Controller;  use Drupal\Core\Ajax\AjaxResponse; use Drupal\Core\Controller\ControllerBase;  class AjaxController extends ControllerBase {    public function ajaxCallback($nid, $key, $value) {     $node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);     $node->set($key, $value);      return new AjaxResponse(['success' => TRUE]);   } } 
 
 
     
     

相关问题

5  以编程方式执行节点搜索  ( Programmatically executing a node search ) 
是否可以以编程方式执行节点搜索?也许通过 nodesearch 或 drupal search ? 最接近的我可以得到以编程方式做诸如: Drupal::service('search.index')->clear(); echo Drupal::service('plugin.manager.search...

1  如何在Ajax视图的公开日期过滤器中更改日期格式,该过滤器使用Bef?  ( How to change date format in an ajax views exposed date filter that uses bef ) 
我有一个使用ajax选项的视图,并使用带有更好的暴露过滤器(最新版本)的一些日期过滤器。我想做的是将日期过滤器的默认日期格式从mm / dd / yy更改为dd / mm / yy。 我试图实现这个解决方案。格式更改,弹出窗口工作正常,但在应用过滤器时出现问题,似乎日期过滤器值似乎没有验证。 如何在AJAX视图中更改...

0  测试保存某些配置的函数 - NULL上调用设置的错误  ( Testing a function which save some configuration error called set on null ) 
我有一个2-3件事的函数,其中一个活动是保存配置。 function processProps($data) { $config = $this->configFactory->getEditable('mymodule.settings'); $config ->set('some_settin...

0  如何从Ajax表单中保存实体  ( How to save entity from a ajax form ) 
我正在运行drupal 8.8.x 问题 在通过AJAX提交表单时,未保存实体。示例: 构建形式 public function buildForm(array $form, FormStateInterface $form_state, EntityInterface $entity = NULL) ...

0  Hook_Node_Presave期间如何重新排序实体引用版本字段?  ( How do you reorder an entity reference revisions field during hook node presave ) 
我正在尝试根据节点保存的文本字段重新排序一些段落,因此作者不需要手动维护字母顺序,但是当我保存节点时,所有值都丢失。我尝试匹配$ node-> get('field_paragraphs') - > getValue(),但这似乎没有工作。 function mymodule_node_presave...

0  如何将来自DrupalSettings的变量的值传递给同一页面中的iframe?  ( How can you pass the value of a variable from drupalsettings to an iframe in the ) 
我在drupal设置中有一个变量,从php获得它的值。 (function ($, Drupal, drupalSettings) { /** * @namespace */ Drupal.behaviors.pdf_appAccessData = { attach: function (cont...

0  用分类权重排序  ( Sort by taxonomy weight ) 
我有一个内容类型"成员" ,带有一个名为"成员角色" 的分类术语,它是一个多价值字段。每个成员最多可包含3个成员角色。 我已经创建了一个视图,以参考分类场与分类学术语重量排序的成员。但问题是每个成员在视图结果页面中重复3次。 我的问题是如何删除重复项,并且仅在多价字段(成员角色)中的最后一个值排序。 ...

0  如何将jQuery验证添加到自定义表单并将错误设置为字段?  ( How to add jquery validation to custom form and set error to field ) 
我想在我的自定义表单上使用jQuery实现客户端验证。 我已经启用了客户端验证贡献模块 我已使用以下代码成功附加了自定义JS文件: mysql> select nid, uid, created, changed from node; +-----+-----+------------+------------+...

2  使用PathAuto <8.x-1.6升级后,网站已损坏  ( Site broken after upgrading with pathauto 8 x 1 6 ) 
我最近升级到Drupal 8.8。不幸的是,我错过了需要升级PathaUto的备忘录,现在我的网站被打破了。大多数页面给出了消息"网站遇到意外错误。请稍后再试。" 我可以到达/用户并使用管理员帐户登录,我可以得到/ update.php,告诉我"pathauto模块与Drupal Core的当前版本不兼容。将Pat...

0  从自定义块中消耗外部API  ( Consume external api from custom block ) 
我目前正在编写一个自定义模块 - 用于 drupal 8 - 如何使用块(使用块显示它们并显示它们)来进行消费/发送外部API数据强> 是标准方法 - 直接或通过控制器通过插件消耗/发送外部API数据,并将其输出到Twig模板? 如果是的话,如何将数据从控制器发送到自定义插件块? 欢迎任何建议。谢谢你。 ...

2  如何在自定义字段中使用替换模式?  ( How can i use a replacement pattern in a custom field ) 
我刚刚在视图中创建了一个新的自定义字段,但我想在该字段中使用替换模式。是否有可能这样做? class CustomButtonField extends FieldPluginBase { /** * {@inheritdoc} */ public function usesGroupBy(...

0  如何在复合组件中的组件上设置验证错误?  ( How do i set a validation error on a component inside a composite component ) 
我有一个webform,一个复合组件允许添加多行。这种结构是这样的,因为它更清楚: webform. sample_details - 复合组件,允许多个"行" ,包含: sample_ref. date_sampled(字段我想要设置错误) 我遵循"方法2 - WebForm处理程序"...

0  只在首页上完全显示最近的帖子,其他人  ( Fully display only most recent post on front page furl the others ) 
目前我的首页只会为我所有新帖子显示一款预告片。 我知道我可以转到 Structure > Views > Frontpage 并将其更改为 show Content | Full ,它将在首页上显示每个帖子的完整帖子。 我想做的是,虽然只是我最近的帖子的全部帖子,然后是所有其他帖子的速度。 是可以这样做吗? ...

1  如何在多站安装中使用一组全局和每个子部分权限?  ( How to use a set of global and per subsite permissions in a multisite installati ) 
用例: 我有一个多功能安装,其中我想定义所有子部门可用的全局配置。我在 default 站点中定义此配置。对于这个例子,让我们说是: 一个角色编辑器 内容类型文章 内容类型页面 现在.. 在所有子区域中,角色编辑器需要有权"使用工具栏" 。全球许可。 在 subsite-a 中,我想允许编辑器只添加...

2  使用#states以复选框  ( Using states in a form with checkboxes ) 
我想当客户端检查一个复选框时,会出现文本字段。示例:如果他点击3个复选框,则为3的所有文本字段都会关闭。 我的#Checkboxes: $form['input']['livraison'] = [ '#title' => t('Options de livraison (à la charge de...

0  不要缓存自定义前页域  ( Dont cache custom front page domain ) 
我正在研究一个模块,该模块显示每个角色不同的FrontPage。我有三个FrontPages: 基本 www.domain.nl anonymous 用户,在基本站点设置中设置 为 role_1 他们转到 sub1.domain.nldashboard 为具有 role_2 他们转到 sub2.domain....

2  创建/编辑节点时如何将字段添加到侧栏菜单?  ( How do i add fields to the sidebar menu when creating editing nodes ) 
我想在Create / Edit节点页面上添加到侧栏菜单。我该怎么办? 我想这样做,以使内容创建/编辑一个小清洁器,更容易理解内容编辑器。 见附加图片... 谢谢。 ...

0  在模态对话框中从表单处理数据  ( Handling data from form in modal dialog ) 
我正在构建一个包含几个点击区域的工具。每个区域都有一个与 theme/template.php5 指向自定义表单路由的链接。 一切正常工作,我能够从表单中获取数据并存储它。然而,我需要用户在这种模态形式中的选择来反映在他们最初单击的区域中。 我忘记了在localstorage或其他东西中存储他们的选择并在关闭每个模...

0  在主和中学和次级语言之间或只是显示错误的URL翻译  ( Url translations transposing between primary and secondary languages or just dis ) 
我们有一个drupal 8.7.10网站,多语言(17个国家,每个人都有2种或更多语言)。 在我附加的例子中,我们有一个"人们" 页面,我们在这个国家列出了我们公司的人。 URL路径应显示"Insalar" 而不是土耳其土耳其翻译的"人民" 。路径的表单字段显示正确。但"查看" 选项卡以及管理员列表中的列表显示"人员...

1  如何从Preprocess函数中从链接字段中获取URL  ( How to get the url from a link field in preprocess function ) 
我有一个内容类型事件。 它有一个链接 field field_event_location_link 链接文本和URL都是可选的 默认情况下,如果没有键入的标题,则使用URL作为标题。 如果标题未填写,我想展示"位置" 。 如何使用预处理功能来查看是否有标题,如果没有,请使用我的字符串。 我尝试过... ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.