我已经尝试了很长一段时间,而且我不太明白为什么一切都适用于苗条。没有Slim一切正常,我有点知道一切是如何工作的(这是一个小项目我正在做的学习ajax,面向对象的php和Slim,从来没有这样做过,所以我真的很棒丢失)。
我现在拥有的是带有表单的html,它通过ajax将数据发送到.php文件。该文件获取数据,运行查询,将结果放入.json字符串,然后html将结果打印为charts.js画布。
这是我的php(Select.php)类:
<?php require_once 'Connection.php';
$id = $_POST['id'];
$from = $_POST['from'];
$to = $_POST['to'];
$date = new Select($dbh, $id, $from, $to);
return $dates->select();
class Select {
private $dbh;
public function __construct($dbh, $id, $from, $to) {
$this->dbh = $dbh;
$this->id = $id;
$this->from = $from;
$this->to = $to;
}
public function select() {
$id = $this->id;
$from = $this->from;
$to = $this->to;
$query = ***Ignoring it because it's quite long***
$results = [];
while ($arr = $query->fetch(PDO::FETCH_ASSOC)) {
$results[] = $arr;
}
echo json_encode($results);
}
}
我的ajax脚本(generateChart.js):
$.ajax({
type: 'post',
url: 'classes/Select.php',
data: $('form').serialize(),
success: function (data) {
var results = JSON.parse(data);
var chartjsTemp = [];
var chartjsDate = [];
for (var i = 0; i < results.length; i++) {
chartjsTemp.push(results[i].probeTemp);
chartjsDate.push(results[i].dateProbe);
}
var ctx = document.getElementById('myChart').getContext('2d');
var button = $("#submitButton");
submitButton.addEventListener("click", function(){
myChart.destroy();
});
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: chartjsDate,
datasets: [{
label: 'temp',
data: chartjsTemp,
backgroundColor: "rgba(240,240,240,0.5)"
}]
}
});
}
});
这就是我正在尝试实现'Select.php'(称为slimSelect.php)的地方。我知道这个档案是一个彻底的火车残骸,但我几乎要经过反复试验,但我绝对不会前进。我不理解the documentation,而stackoverflow中的other posts并不能解释它是如何工作的:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
require 'Autoloader.php';
$app = new \Slim\App;
$app->post('/', function(Request $request) use ($app) {
$allPostPutVars = $request->getParsedBody();
$id = $allPostPutVars['id'];
$from = $allPostPutVars['from'];
$to = $allPostPutVars['to'];
include 'Select.php';
});
$app->run();
现在,它给了我Fatal error: Class 'Select' not found
,尽管它确实存在。我只是想知道如何让苗条和我的班级一起工作。如果有人能够解释我如何使其发挥作用,或者至少指出我正确的方向,我会非常感激。
编辑:修改了slimSelect.php。我现在得到“致命错误:在第11行调用未定义的方法Slim \ Http \ Response :: getAttribute()”
编辑2:GOT SOMETHING WORKING !!!!我的一个主要问题是我完全弄乱了$app->post
中的函数,这给了我$ request等错误。神奇发生在第9行和第10行。它现在将.json发回并打印图表!现在我想了解如何在不包含它的情况下调用类Select。
答案 0 :(得分:1)
您的Select类未自动加载,这就是您收到此错误的原因。你有没有从这个苗条的网站上看到这个推荐。 https://www.slimframework.com/&#34;开始使用Slim的最简单方法是通过运行此bash命令创建一个使用Slim-Skeleton作为基础的项目:
$ php composer.phar create-project slim / slim-skeleton [my-app-name] &#34 ;.我通常使用这个骨架应用程序来构建我的超薄应用程序。