我已经在我的项目中更新了cakephp核心的最新版本.现在我收到这个错误:
Deprecated (16384): SessionHelper has been deprecated. Use request->session() instead. [CORE/src/View/Helper/sessionHelper.php, line 39]
Run Code Online (Sandbox Code Playgroud)
我认为错误在于这一行:
if ($this->session->read('admin_logged_in')){
Run Code Online (Sandbox Code Playgroud)
我应该用什么呢?
谢谢
我已通过 Composer 将 cakePHP 应用程序更新到 3.1,并且正在尝试修复所有小警告或已弃用的警告。
我可以轻松修复这些$this->layout
内容,但我不明白如何修复viewPath
错误。
查看迁移指南,看起来应该是完全相同的事情:
$this->viewPath = 'Element';
Run Code Online (Sandbox Code Playgroud)
应该成为
$this->viewBuilder()->viewPath('Element');
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我得到的唯一的就是
Error: Call to undefined method Cake\View\ViewBuilder::viewPath()
File /var/www/myapp/src/Controller/InvoicesController.php
Line: 375
Run Code Online (Sandbox Code Playgroud)
解决这个问题的正确方法是什么?
所以我让我的网站现场直播,我进入公共领域,人们并不总是很好.我刚刚开始学习CSRF,并发现当我将cakephp 3网站现场直播时,这是我需要的东西.如此处所见!
我将csrf组件和安全组件添加到我的站点,但我有一个主要问题.现在,当用户想要注册时,他们不能.我使用条带的自定义表单来发送付款,但也使用ajax将用户添加到我的数据库.首先添加用户,然后处理付款并将订单保存到数据库.
根据条带文档,我在单击提交按钮后将隐藏值中的标记添加到表单中,并且不禁注意到我的新安全性不允许这种情况发生.
由于我使用ajax将发布数据发送给我的用户控制器并在提交时添加表单输入,
如何在不禁用相关操作的安全性的情况下检查csrf令牌并确保没有安全漏洞?
一个如何做到这一点的例子将非常受欢迎,因为在cakephp 3中似乎缺乏这样做的例子.由于cakephp 3 automagic将标记添加到表单中,因此我很难弄清楚一切是如何工作的.曲奇饼.我不确定如何/在哪里/检查什么.
我有以下关联:Orders
belongsToSites
我执行以下查询:
$sites = $this->Sites->find('all')
->select(['id', 'name'])
->contain([
'Users' => function ($q) {
return $q->select(['id', 'owner_id', 'firstname', 'lastname']);
},
'Orders' => function ($q) {
return $q->where(['status >' => 0]);
},
'Orders.Agplans'
])
->matching('Users', function ($q) use($owner_id)
{
return $q->where([
'Users.owner_id' => $owner_id
]);
})
->all();
Run Code Online (Sandbox Code Playgroud)
但大多数网站都没有订单,所以我得到了一些结果:
(int) 100 => object(App\Model\Entity\Site) {
'id' => (int) 7966,
'name' => 'Site example',
'orders' => [],
'users' => [
(int) 0 => object(App\Model\Entity\User) {
...
Run Code Online (Sandbox Code Playgroud)
是否可以在查询中指定我只想sites
不为空orders
?