ajax 调用控制器函数但不执行任何操作
ajax call to controller function without action
我需要在页面中添加块。在块添加对话框中,我有一个 select 框,我需要在保存块之前填充从 ajax 接收的数据(除非我 select 选项,否则无法保存)。
问题是 ajax 调用通常是针对一个控制器操作,在我保存该选项之前我无法保存的块之前不存在该控制器操作 selected。如何在块保存之前对任何其他非操作函数进行 ajax 调用?它可以是任何其他控制器功能还是只能是 action_function?这可能吗?
[更新]
我正在尝试路线。在包控制器中声明了一个路由:
$this->app->make(Router::class)->register('/api/get_forum_posts', '\Concrete\Package\AbForum\Src\Forum\MyFunctions::get_forum_posts', null, [], [], '', [], ['GET']);
但上面写着:
Exception Occurred:
/srv/www/htdocs/c584/concrete/src/Controller/ApplicationAwareControllerResolver.php:89
Class "\Concrete\Package\AbForum\Src\Forum\MyFunctions" does not
exist.
但是 class MyFunctions 位于该文件夹 packages/ab_forum/src/Forum/MyFunctions。php
我明白了。以下作品。
在包控制器中:
protected $pkgAutoloaderRegistries = [
'src/Forum' => 'Forum'
];
public function on_start()
{
$this->app->make(Router::class)->register('/api/get_forum_posts', 'Forum\MyFunctions::getForumPostsJson', null, [], [], '', [], ['GET']);
...
}
packages/ab_forum/src/Forum/MyFunctions 中的 MyFunctions 控制器 class。php:
namespace Forum;
use Concrete\Core\Controller\AbstractController;
class MyFunctions extends AbstractController
{
public function getForumPostsJson()
{
$data = $request->request->all();
...
echo json_encode($json);
exit;
}
}
与ajax的块形式:
$.ajax({
url: '<?php echo Url::to('api/get_forum_posts'); ?>',
type: 'GET',
data: {
topic: topic.val(),
date: date.val(),
},
})
.done(function(data) {
...
});
我需要在页面中添加块。在块添加对话框中,我有一个 select 框,我需要在保存块之前填充从 ajax 接收的数据(除非我 select 选项,否则无法保存)。
问题是 ajax 调用通常是针对一个控制器操作,在我保存该选项之前我无法保存的块之前不存在该控制器操作 selected。如何在块保存之前对任何其他非操作函数进行 ajax 调用?它可以是任何其他控制器功能还是只能是 action_function?这可能吗?
[更新]
我正在尝试路线。在包控制器中声明了一个路由:
$this->app->make(Router::class)->register('/api/get_forum_posts', '\Concrete\Package\AbForum\Src\Forum\MyFunctions::get_forum_posts', null, [], [], '', [], ['GET']);
但上面写着:
Exception Occurred: /srv/www/htdocs/c584/concrete/src/Controller/ApplicationAwareControllerResolver.php:89 Class "\Concrete\Package\AbForum\Src\Forum\MyFunctions" does not exist.
但是 class MyFunctions 位于该文件夹 packages/ab_forum/src/Forum/MyFunctions。php
我明白了。以下作品。
在包控制器中:
protected $pkgAutoloaderRegistries = [
'src/Forum' => 'Forum'
];
public function on_start()
{
$this->app->make(Router::class)->register('/api/get_forum_posts', 'Forum\MyFunctions::getForumPostsJson', null, [], [], '', [], ['GET']);
...
}
packages/ab_forum/src/Forum/MyFunctions 中的 MyFunctions 控制器 class。php:
namespace Forum;
use Concrete\Core\Controller\AbstractController;
class MyFunctions extends AbstractController
{
public function getForumPostsJson()
{
$data = $request->request->all();
...
echo json_encode($json);
exit;
}
}
与ajax的块形式:
$.ajax({
url: '<?php echo Url::to('api/get_forum_posts'); ?>',
type: 'GET',
data: {
topic: topic.val(),
date: date.val(),
},
})
.done(function(data) {
...
});