十月 CMS:AJAX 表单

Posted

技术标签:

【中文标题】十月 CMS:AJAX 表单【英文标题】:October CMS: AJAX form 【发布时间】:2022-01-20 11:21:49 【问题描述】:

我的目标是在指定并提交日期范围时更新部分以显示课程日期。

我有一个按预期工作的功能。

用户选择开始日期 用户选择结束日期 用户点击搜索 结果记录到控制台

这里是函数

function onFetchDataFromServer()

    $course = Course::findOrFail( $this->param('id') );

    $start = Input::get('start_date');

    $end = Input::get('end_date');

    $dates = $course->coursemetas->whereBetween('date', array($start, $end));

    return $dates;

这是标记

<form class="row gx-3 align-items-center" data-request="onFetchDataFromServer" data-request-success="console.log(data)"">
    <div class="col-12 col-lg pxp-has-left-border">
        <div class="input-group mb-3 mb-lg-0">
            <span class="input-group-text"><span class="fa fa-calendar-o"></span></span>
            <input type="date" class="form-control" id="startPicker" name="start_date" placeholder="Choose a start date">
        </div>
    </div>
    <div class="col-12 col-lg pxp-has-left-border">
        <div class="input-group mb-3 mb-lg-0">
            <span class="input-group-text"><span class="fa fa-calendar-o"></span></span>
            <input type="date" class="form-control" id="endPicker" name="end_date" placeholder="Choose an end date">
        </div>
    </div>
    <div class="col-12 col-lg-auto">
        <button type="submit">Search dates</button>
    </div>
</form>

因此,我现在想更新部分结果,而不是将结果记录到控制台。

我在视图中有一个名为“课程/元”的部分。

有人可以帮帮我吗?

提前致谢。

【问题讨论】:

【参考方案1】:

你可以试试这样的。检查documents here。

这是针对页面的 PHP 部分的:

function onFetchDataFromServer()

    $course = Course::findOrFail( $this->param('id') );

    $start = Input::get('start_date');

    $end = Input::get('end_date');

    $dates = $course->coursemetas->whereBetween('date', array($start, $end));

    $this['dates'] = $dates;

    return [
        '#myDiv' => $this->renderPartial('coursemetas')
    ];

这是针对组件插件的:

function onFetchDataFromServer()

    $course = Course::findOrFail( $this->param('id') );

    $start = Input::get('start_date');

    $end = Input::get('end_date');

    $dates = $course->coursemetas->whereBetween('date', array($start, $end));

    $this->page['dates'] = $dates;

    return [
        '#myDiv' => $this->renderPartial('@coursemetas')
    ];

注意与renderPartial 一起发送的@ 符号,因为这告诉框架在插件文件夹中查找部分。或者您可以通过组件和部分名称指定部分路径,例如return $this-&gt;renderPartial('course::coursemetas');

【讨论】:

好的,所以我做了以下事情: - 将部分coursemetas 添加到我的页面布局中,但如果我在函数中使用@coursemetas,它会返回异常:'找不到部分'coursemetas'。 '加载没有“@”只是没有响应。 我在 php 选项卡中而不是在组件中执行此操作 @Jakef19 啊啊啊你没有指定。我会更新答案。在您的分部主题中,您有一个名为 metas.htm 的分部?还是叫 coursemetas.htm? 啊抱歉!它叫做 coursemetas.htm @Jakef19 你有没有让这个工作?您需要更多帮助吗?

以上是关于十月 CMS:AJAX 表单的主要内容,如果未能解决你的问题,请参考以下文章

织梦cms如何实现自定义表单字段的查询

ajax 提交表单方法1

ajax 提交表单的方法2

使用 jQuery.ajax 在 MySQL 中存储表单数据 [重复]

jQuery AJAX 将提交的表单替换为表单(好),但不会再次提交

Codeigniter 4 在 AJAX 模式中重用 CSRF 令牌