标签: cakephp-3.1

cakephp3会话已弃用

我已经在我的项目中更新了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)

我应该用什么呢?

谢谢

php session cakephp cakephp-3.1

2
推荐指数
1
解决办法
3212
查看次数

$this->viewPath 不适用于 CakePHP 3.1

我已通过 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)

解决这个问题的正确方法是什么?

cakephp cakephp-3.1

2
推荐指数
1
解决办法
2045
查看次数

如何在用户未登录时使用AJAX和CakePHP 3检查CSRF令牌?

所以我让我的网站现场直播,我进入公共领域,人们并不总是很好.我刚刚开始学习CSRF,并发现当我将cakephp 3网站现场直播时,这是我需要的东西.如此处所见!

我将csrf组件和安全组件添加到我的站点,但我有一个主要问题.现在,当用户想要注册时,他们不能.我使用条带的自定义表单来发送付款,但也使用ajax将用户添加到我的数据库.首先添加用户,然后处理付款并将订单保存到数据库.

根据条带文档,我在单击提交按钮后将隐藏值中的标记添加到表单中,并且不禁注意到我的新安全性不允许这种情况发生.

由于我使用ajax将发布数据发送给我的用户控制器并在提交时添加表单输入,

如何在不禁用相关操作的安全性的情况下检查csrf令牌并确保没有安全漏洞?

一个如何做到这一点的例子将非常受欢迎,因为在cakephp 3中似乎缺乏这样做的例子.由于cakephp 3 automagic将标记添加到表单中,因此我很难弄清楚一切是如何工作的.曲奇饼.我不确定如何/在哪里/检查什么.

cakephp cakephp-3.0 cakephp-3.1 cakephp-3.x

1
推荐指数
1
解决办法
3703
查看次数

如何只选择那些至少有一个关联记录的记录?

我有以下关联:OrdersbelongsToSites

我执行以下查询:

$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

cakephp query-builder cakephp-3.1

0
推荐指数
1
解决办法
749
查看次数