php - OctoberCMS 表单请求未提交

标签 php mysql laravel octobercms

我正在关注 this tutorial创建一个简单的 OctoberCMS 插件。 以下是 /acme/demo/components/todo/default.htm 页面的内容:

{% set tasks = __SELF__.tasks %}

<form data-request="{{ __SELF__ }}::onAddItem" data-request-success="$('#inputItem').val('success')">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h3 class="panel-title">Tasks assigned to: {{__SELF__.name}} </h3>
        </div>
        <div class="panel-body">
            <div class="input-group">
                <input name="task" type="text" id="inputItem" class="form-control" value=""/>
                <span class="input-group-btn">
                    <button type="submit" class="btn btn-primary">Add</button>
                </span>
            </div>  
        </div>
        <ul class="list-group" id="result">
            {% for task in tasks %}
                <li class="list-group-item">
                    {{ task }}
                    <button class="close pull-right">&times;</button>
                </li>
            {% endfor %}
        </ul>
    </div>
</form>

这里是/acme/demo/components/Todo.php的内容:

<?php namespace Acme\Demo\Components;

use Cms\Classes\ComponentBase;
use Acme\Demo\Models\Task; 

class Todo extends ComponentBase
{
    /**
    * This is a person's name.
    * This variable will be available in the page as a twig variable
    * @var string
    */
    public $name;
    /**
    * The collection of tasks.
    * @var array
    */
    public $tasks;

    public function componentDetails()
    {
        return [
            'name'        => 'Todo Component',
            'description' => 'A database driven TODO list'
        ];
    }

    public function defineProperties()
    {
        return [];
    }

    public function init()
    {
        // This will execute when the component is first initialized, including AJAX events.
    }

    public function onRun()
    {
        $this->name = 'Meysam'; 
        $this->tasks = Task::lists('title');
    }

    public function onAddItem()
    {
        $taskName = post('task');
        $task = new Task();
        $task->title = $taskName;
        $task->save();
    }

}

问题是 onAddItem 从未被调用。当我添加新项目时,似乎没有正确提交表单。有人知道我该如何解决这个问题吗?我认为可能缺少 ajax 库,所以我也包含了 {% framework %},这同样没有帮助:

{% set tasks = __SELF__.tasks %}
{% framework %}

<form data-request="{{ __SELF__ }}::onAddItem" data-request-success="$('#inputItem').val('success')">

请注意,我的模型正在运行,$this->tasks = Task::lists('title'); 返回任务列表。

最佳答案

问题是我应该有 included jquery 文件也是如此:

<script src="{{ [
    'assets/javascript/jquery.js',
]|theme }}"></script>

{% framework %}

关于php - OctoberCMS 表单请求未提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954130/

相关文章:

mysql - 如何检查值包含字符和数字 > x

Laravel 的文件系统与 s3 使用错误的 url

php - 如何从datalist中获取值id并显示标题?

php - 包含文件和 https 停止我的 css 工作

php - SQL 多查询特定

php - 拉维尔 4 : Two different view pages for a single URI based on auth status

php - 关系字段上的排序依据

php - 使用 javascript 和 jquery 动态包含一个 php 文件

python - 如何将sql查询读取到pandas dataframe/python/django

python - 使用python的Mysql LIMIT OFFSET错误