Cześć,
Mam buton w html'u. Po kliknięciu na niego ma się wykonać funkcja php, więc wpadłem na pomysł żeby zrobić to dzięki Ajax'owi. Problem jest taki że nie wiem jak ją wywołać gdy jest ona w jakieś klasie. Tzn... Albo w sumie najpierw pokaże co zrobiłem:
HTML i AJAX:
<button class="confirm-rules" type="button" onclick="sendStatus('accept_rules')">Rozumiem</button>
<script type="text/javascript">
function sendStatus(status) {
$.ajax({
method: "POST",
url: "Controllers/Core/Dashboards/Admin/Dashboard.php",
data: { status: status }
}).done(function( msg ) {
alert("Cookie saved:" + msg );
});
}
</script>
PHP:
<?php
declare(strict_types=1);
namespace App\Controllers\Core\Dashboards\Admin;
use App\Controllers\Controller;
use App\Core\SessionManagement;
use App\Core\Request;
use App\Core\Cookies;
class AdminDashboard extends Controller
{
private $session;
private $cookies;
private $request;
/**
* AdminDashboard constructor.
* @param SessionManagement $sessionManagement
* @param Cookies $cookies
* @param Request $request
*/
public function __construct(SessionManagement $sessionManagement, Cookies $cookies, Request $request)
{
$this->session = $sessionManagement;
$this->cookies = $cookies;
$this->request = $request;
}
public function acceptDashboardBox()
{
// ZAWARTOŚĆ PRZYKŁADOWA TO TESTÓW
if ( isset($_POST['status']) )
{
echo $_POST['status'];
}
}
/**
*
*/
public function index() : void
{
Controller::renderView('Core/Dashboards/Admin/Dashboard');
}
}
Więc jak mogę wywołać funkcje a raczej metodę która jest w pewnej klasie? Bo gdy robię to tak że tworzę inny plik php i w nim daje tylko echo $_POST['status'] czyli to co wysyła AJAX, działa normalnie.
Czyli button ma onclicka z wywołaniem funkcji js, funkcja JS ma w sobie Ajaxa który wysyła POST'a z zawartością to co jest w buttonie w onclicku czyli: accept_rules do pliku php - metody mianowicie acceptDashboardBox() która to sobie interpretuje.
Tak wiem troszkę to skomplikowałem ale myślę że wiecie o co chodzi, a jeśli nie to postaram się bardziej to wytłumaczyć.
Z góry dzięki!