【发布时间】:2019-01-31 16:46:34
【问题描述】:
我在 html 上有这样的按钮:
<button class="uk-button uk-button-primary uk-modal-close confirm-rules" type="button" onclick="sendStatus('accept_rules')">Rozumiem</button>
当我点击按钮时,我想这样做,php中的函数将被调用。 我尝试通过 ajax 这样做:
<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 $cookies;
/**
* AdminDashboard constructor.
* @param Cookies $cookies
*/
public function __construct(Cookies $cookies)
{
$this->cookies = $cookies;
}
public function acceptDashboardBox()
{
if ( isset($_POST['status']) )
{
$this->cookies->add( $_POST['status'], 'true', 'time() + (365 * 24 * 60 * 60)');
}
}
/**
*
*/
public function index() : void
{
Controller::renderView('Core/Dashboards/Admin/Dashboard');
}
}
按钮必须在类 AdminDashboard 上运行函数 acceptDashboardBox()。 我该怎么做?
【问题讨论】:
-
App\Controllers\ControllerCI 是什么框架?在任何情况下,通常使用 MVC 框架,您永远不会直接调用Dashboard.php,而是调用Dashboard,或者如果没有HTACCESS,它实际上会类似于index.php/Dashboard,然后框架会将其路由到控制器中。所以我很困惑。 -
我使用了自己的框架。我只是在学习 mvc 和面向对象的编程,所以我还没有使用现成的框架。
-
任何框架的一个关键点是入口点,这是所有请求都必须经过的公共位置,这使您可以“加载”您的框架,无论请求如何。一切都应该通过入口点,然后路由器将其委托给适当的控制器处理。我在GitHub 上有一个简单路由器的示例