我在我的 Laravel 项目中安装了 elasticsearch-php。需要通过 Longstash 和 Kibana 进行数据分析,但我不知道如何将 elasticsearch-php 与堆栈的其余部分集成。
kittycat_13's questions
你好!我正在用 js 为我的 php 中的 api 编写一个客户端。我马上预约,我刚开始用js,可能有我没有注意到的错误。
重点是这个。我有一个客户端,它将来自 api 的文章列表输出为表格。每个表条目都可以更新和删除。也可以将您的文章添加到表格中。
我使用相同的表单来创建和编辑文章。
表单代码(添加编辑文章的表单id = addArcicle):
<!DOCTYPE html>
<html>
<head>
<title>JS-client</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/bootstrap.css" rel="stylesheet">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body>
<button type="button" id="newArticle" class="btn btn-outline-secondary" onclick="articles.addAction()">Add new article</button>
</nav>
<form id="addArcticle" class="col-lg-2">
<fieldset>
<legend>Add new article</legend>
<div class="form-group">
<label for="title">Title of article</label>
<input type="text" class="form-control" id="title">
</div>
<div class="form-group">
<label for="exampleTextarea">Content</label>
<textarea class="form-control" id="content" rows="3"></textarea>
</div>
<div class="form-group">
<label for="author">Author</label>
<input type="text" class="form-control" id="author">
</div>
<button type="button" class="btn btn-primary" id="add">Add</button>
</fieldset>
</form>
<script src="js/jquery.js"></script>
<script src="js/client.js"></script>
<script src="js/helpers.js"></script>
</body>
</html>
如果任务是向表中添加新文章,则单击“添加新文章”按钮并出现此表单。在单击按钮之前,表单被 jQuery hide() 方法隐藏。
添加新记录进展顺利。但是,如果我尝试在不重新加载页面的情况下立即按下编辑按钮,那么,除了该条目发生更改之外,还会创建相同条目的新条目。那些。click() 事件以两种不同的方法触发。
以下是我使用 js 方法处理给定表单的方法:
function ArticleController() {
this.posts = [];
this.indexAction = function() {
articles.getAllArticles();
};
this.addAction = function() {
$('#articleTable').hide();
$('#addArcticle').show();
$('#add').click(function(){
title = $('#title').val();
content = $('#content').val();
author = $('#author').val();
articles.addArticle(title, content, author);
});
};
this.deleteAction = function(id) {
this.deleteArticle(id);
};
this.editAction = function(id) {
var article = document.getElementById(''+id);
$('#title').val("" + article.cells[1].innerHTML);
$('#content').val("" + article.cells[2].innerHTML);
$('#author').val("" + article.cells[3].innerHTML);
$('#add').click(function(){
title = $('#title').val();
content = $('#content').val();
author = $('#author').val();
articles.editArticle(id, title, content, author);
});
};
}
请告诉我,可能出了什么问题。
面对在没有 jQuery 帮助的情况下为表实现延迟加载的任务。谷歌没有帮助,我没有找到或多或少足够和合适的主题的例子。有没有其他人遇到过这个问题?我很乐意提供帮助。
在这里,我从服务器获取文章列表并将 json 响应解析为表:
ArticleController.prototype.getAllArticles = function() {
var xhr = new XMLHttpRequest();
xhr.open('GET', '/api/posts', true);
xhr.setRequestHeader('Authorization', 'Basic ' + btoa("admin" + ":" + "admin"));
xhr.onreadystatechange = function () {
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
var items = JSON.parse(xhr.responseText);
var output = '';
for (var key in items) {
output += '<tr>';
output += '<td>' + items[key].id + '</td>';
output += '<td>' + items[key].title + '</td>';
output += '<td>' + items[key].content + '</td>';
output += '<td>' + items[key].author + '</td>';
output += '<td>' + items[key].creation_date + '</td>';
output += '<td>' +
'<a href="#"><i class="material-icons">edit</i></a>' +
'<a href="#" class="col-lg-1"><i class="material-icons">delete</i></a>' +
'</td>';
output += '</tr>'
}
document.getElementById('articles').innerHTML = output;
};
};
xhr.send();
}
function ArticleController() {
this.indexAction = function() {
this.getAllArticles();
};
};
var articles = new ArticleController();
articles.indexAction();
盘子是这样的:
你好!你能解释一下为什么缓存会话数据吗?我明白为什么要缓存来自数据库的一些请求,但我不明白为什么要缓存会话数据。
你好。这是我的身份验证示例:
<?php
class Authentication
{
public static function authenticate()
{
if (!isset($_SERVER['PHP_AUTH_USER']) ||
!isset($_SERVER['PATH_AUTH_PW'])||
($_SERVER['PHP_AUTH_USER']!= "admin")||
($_SERVER['PATH_AUTH_PW']!= "admin"))
{
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm= "Rest-api"');
exit('Sorry, you must enter a valid user name and password');
} else {
header('Location: http://google.com');
}
}
}
我在索引文件中启动路由器之前调用它:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
define('ROOT', dirname(__FILE__));
require_once(ROOT.'/components/Autoload.php');
Authentication::authenticate();
$router = new Router();
$router->run();
请告诉我,也许我做错了身份验证或者我在错误的地方打电话?即使我输入了正确的数据,输入登录名和密码的表单也会再次出现。
你好!
有一项任务是编写一个 REST API,它将执行以下功能:通过 id 获取帖子、创建帖子、更改帖子、删除帖子。
所以,我对 REST 如何创建、更新和删除有点困惑。我知道有 GET、POST、PUT、DELETE 方法,但我不明白如何在 PHP 中使用它们。
创建帖子和更新是通过表单完成的?但是如何调用 DELETE 方法呢?一个 url 怎么能理解 book/id 是获取关于一本书的信息,但 books/id 也在删除一本书?这些方法应该写在哪里?如果不难,请举例说明。
你好。转到根以外的链接时,部分 URL 会重复。我的站点不在根目录中,而是在一个单独的文件夹中。
以下是主页地址:
http://localhost/testTaskForCodeIt/
这是我第一次进入注册页面:
http://localhost/testTaskForCodeIt/user/register(到目前为止一切顺利)
在这里我再次点击注册按钮:
http://localhost/testTaskForCodeIt/user/user/register
在这里用户部分开始被复制
.htaccess
AddDefaultCharset utf-8
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
路线文件:
return array(
'user/register' => 'user/register',
'user/login' => 'user/login',
'user/logout' => 'user/logout',
'' => 'application/index',
);
这是路由器本身:
<?php
class Router
{
private $routes;
public function __construct()
{
$routesPath = ROOT . '/config/routes.php';
$this->routes = include($routesPath);
}
/**
* Returns request string
*/
private function getURI()
{
if (!empty($_SERVER['REQUEST_URI'])) {
return trim($_SERVER['REQUEST_URI'], '/');
}
}
public function run()
{
// Получить строку запроса
$uri = $this->getURI();
// Проверить наличие такого запроса в routes.php
foreach ($this->routes as $uriPattern => $path) {
// Сравниваем $uriPattern и $uri
if (preg_match("~$uriPattern~", $uri)) {
//var_dump(strpos($uri, $uriPattern));
// Получаем внутренний путь из внешнего согласно правилу.
$internalRoute = preg_replace("~^$uriPattern~", $path, $uri);
// Определить контроллер, action, параметры
$segments = explode('/', $internalRoute);
$controllerName = array_shift($segments) . 'Controller';
$controllerName = ucfirst($controllerName);
$actionName = 'action' . ucfirst(array_shift($segments));
$parameters = $segments;
// Подключить файл класса-контроллера
$controllerFile = ROOT . '/controllers/' .
$controllerName . '.php';
if (file_exists($controllerFile)) {
include_once($controllerFile);
}
// Создать объект, вызвать метод (т.е. action)
$controllerObject = new $controllerName;
$result = call_user_func_array(array($controllerObject, $actionName), $parameters);
if ($result) {
break;
}
}
}
}
}
请告知在这种情况下可以做些什么。
你好。我有一个视图矩阵:
matrix = [
[0, 1, 0, 1, 0],
[0, 0, 1, 1, 0],
[0, 0, 1, 1, 0],
[0, 0, 0, 0, 0],
[0, 1, 0, 1, 0]
];
我需要找到从起点到终点的路径。您只能在包含 0 的单元格上移动。
var start = [0,4];
var end = [4,0];
我只能朝四个方向移动。上下左右。方向写在我的数组中。
var direction = [[1,0], [0,1], [-1, 0], [0,-1]];
我有点深入了解搜索算法。但我对运动方向有疑问。这是我的理解:1)将单元格设置为起始坐标。2)开始沿着方向阵列移动单元格。3)如果这个方向不适合我(单元格等于一或单元格不存在,或单元格索引大于矩阵的维度,或小于零),我返回并切换到新的方向。4)如果单元格适合我,我将当前单元格设置为它并再次调用该函数。
但问题是,如何检查相邻单元格是否等于结束值?如果再加一个?
一般来说,我不太了解如何正确实现算法本身。也许我不太了解算法。我会很高兴得到任何帮助。
你好!有一个二维矩阵。我需要将它解析成一个表格,但是每个表格单元格以 5 秒的间隔出现。
这是目前可用的:
document.write('<table>');
for(c = 0; c<dimension; c++){
document.write('<tr>');
for(r = 0; r<dimension; r++){
document.write('<td>'+ matrix[c][r] + '</td>');
}
document.write('</tr>');
}
document.write('</table>');
在这里,我将矩阵的每个元素显示在一个单独的单元格中。这会产生如下表格:
请告诉我,我怎样才能让表格的每个单元格延迟出现?
你好!有一个数字数组。我需要检查这个数组是否存在数字,其中包括数字 6。我正在遍历数组for
。你能告诉我最好的方法吗?将每个数字与正则表达式进行比较还是有其他方法?
var numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var n = 6;
for(var i = 0; i<numbers.length; i++){
var sort[] = numbers[i];
if(numbers[i].search(n)){
delete(numbers[i]);
}
}
你好!我写了一个脚本,理论上,应该从左侧开始生成一个螺旋形的 3x3 矩阵。一切都会好的,但我收到一个错误,即数字变量未定义或等于零。请看我的代码。也许我在某个地方犯了一个错误。我不知道怎么了。如果您找到任何其他门框,我将不胜感激。
我按照建议重写了代码。形成了一个3x3的矩阵,但是填错了(
var numbers = [1,2,3,4,5,6,7,8,9];
var dimension = 3;
var matrix = [];
for(var d = 0; d<dimension; d++){
matrix[d] = [];
}
makeMatrix(numbers, dimension, matrix);
function makeMatrix(numbers, dimension, matrix){
for(var n = 0; n < numbers.length; n++){
var i = 0;
var j = 0;
var number = numbers[n];
moveDown(i, j, matrix, number);
}
console.log(matrix);
}
function moveDown(i, j, matrix, number){
for(j; j<dimension; j++){
matrix[i][j]=number;
if(matrix[i][j+1]!="" && matrix[i+1][j]==""){
i = i+1;
moveRight(i, j, matrix, number);
}
}
}
function moveRight(i, j, matrix, number){
for(i; i<dimension; i++){
matrix[i][j]=number;
if(matrix[i+1][j]!="" && matrix[i][j-1]==""){
j = j-1;
moveUp(i, j, matrix, number);
}
}
}
function moveUp(i, j, matrix, number){
for(j; j>=0; j++){
matrix[i][j]=number;
if(matrix[i][j-1]!="" && matrix[i-1][j]==""){
i = i-1;
moveLeft(i, j, matrix, number);
}
}
}
function moveLeft(i, j, matrix, number){
for(i; i>=0; i++){
matrix[i][j]=number;
if(matrix[i-1][j]!="" && matrix[i][j+1]==""){
dimension = dimension/2;
makeMatrix(numbers, dimension);
}
}
}
你好!有一个用于输入数字的字段。输入字段下方是“提交”按钮。提交后如何隐藏表单?抱歉这个愚蠢的问题,但我根本不擅长 JS。
你好。如果应该填充用户表的播种机。
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('users')->insert([
'name' => str_random(10),
'email' => str_random(10).'@gmail.com',
]);
}
}
但它只生成一个条目。我需要它来生成 100 个用户。请告诉我该怎么做。
你好!请帮助我了解 GitHub 的功能,例如Issues、Projects、Pull Requests。它们的用途是什么以及如何与它们一起工作。我有一个包含 2 个文本文件的存储库。并且您需要将这些功能应用于此存储库。非常感谢您!
你好!有一个问题:你在某些日子去健身房,例如,星期二、星期四、星期六。知道今天的日期以及您想参加多少次锻炼后,您需要找出参加完这些锻炼后将经过多少个日历日。例如,今天是 2016 年 4 月 18 日星期一,你在星期二、星期四和星期六去健身房,我们想知道参加六次锻炼后还有多少天。结果应该是13天(4月19日、21日、23日、26日、28日和30日锻炼)。
您需要编写一个函数来执行此操作。函数签名应如下所示:
function($startDate, $trainingCount, $schedule)
其中
$startDate
- 开始日期作为字符串,例如,'2016-04-18'
;
$trainingCount
- 预定的锻炼次数为整数;
$schedule
- 一个数组,其中包含从 1、Mon - 1、Tue - 2 等开始的星期几的序号。
以下是目前可用的内容:
function calculateDays($startDate, $trainingCount, array $schedule){
$start_date = date("d-m-y", $startDate);
$training_count = (int)$trainingCount;
foreach ($schedule as $day) {
switch ($day) {
case '1':
$arr[1] = "Mon";
break;
case '2':
$arr[2] = "Tue";
break;
case '3':
$arr[3] = "Wed";
break;
case '4':
$arr[4] = "Thu";
break;
case '5':
$arr[5] = "Fri";
break;
case '6':
$arr[6] = "Sat";
break;
case '7':
$arr[7] = "Sun";
break;
}
}
}
我不知道如何找到这些锻炼后将经过的天数。