ajax - 渲染特定模板/ AJAX 请求时,Cakephp 3 查看 App 控制器中设置的变量不可用
问题描述
我在我的应用程序控制器中设置了一些视图变量,例如公司名称、地址、联系信息,这些变量会根据子域而变化,以便它们在所有视图模板中都可用。但是,我正在努力确定为什么在发出 ajax 请求时不可用。
//App Controller beforeFilter
$this->set('company', 'Test Company');
$this->set('address', '14 Test Street, Test, TE5 3ST');
$this->set('email', 'test@test.com');
上述变量可用于所有非 ajax,即当我不呈现特定模板请求时,但是对于下面的示例请求,我无法访问 test_data 模板中的这些变量。
function _ajaxGetTestData()
{
$view = new View();
$content = $view->render('Home/Ajax/test_data');
$response['content'] = $content;
$response['success'] = TRUE;
$this->set(compact('response'));
$this->set('_serialize', ['response']);
}
解决方案
那是因为您没有从应用控制器序列化变量。
你可以试试你的方法:
$response['company'] = $company;
$response['address'] = $address;
$response['email'] = $email;
或https://book.cakephp.org/3/en/views/json-and-xml-views.html#using-a-data-view-with-template-files
推荐阅读
- spring-boot - 如何使用 DynamoDB 表注释在 AWS DynamoDB 读/写操作中创建布尔数据类型
- android - 依赖项列表中的无效项“Flutter for Android”
- flutter - Flutter Socket.io 未连接到域
- c++ - 不同类型的显式变量模板特化
- c++ - 与 get_time 不一致的结果
- php - 未捕获的 PDOException:SQLSTATE[HY093]:无效的参数号:绑定变量的数量与标记的数量不匹配
- c++ - 为什么在 C++ 中添加数组元素时我会得到非常大的数字?
- javascript - 使用 call/apply 或直接调用函数有什么区别?
- node.js - 如何重塑 GraphQL 响应?
- android - 将多用户从 csv 或 excel 导入到 firbase auth