首页 > 解决方案 > 通过在 symfony 中刷新页面来增加变量

问题描述

您好,我正在尝试学习如何使用 symfony,所以我想出了一个想法来制作一个页面,该页面显示每次页面刷新时都会递增的数字。我也不想使用数据库,所以锻炼不是那么容易。我试图制作一个保存变量并增加它的服务,但是由于我对 symfony 的理解很差,它不起作用:( 然后我尝试使用 session 但结果是一样的 :(( 我用完了想法。到目前为止我所做的:

<?php

namespace App\Controller;


use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Addition\GlobalKeeper;

/**
 * Class counterController
 * @package App\Controller
 * @Route("/")
 */

class counterController extends AbstractController
{
    private $Gcounter;
    public function __construct()
    {
        $this->Gcounter = new GlobalKeeper();
    }

    /**
     * @Route("/")
     */
    public function Counter (){
        $this->Gcounter->startfordummy();
        $this->Gcounter->increment();
        return $this->render('home\insides.html.twig',
        [ 'num' => $this->Gcounter->getCounter()]);
    }
}

/////

<?php
 



namespace App\Addition;


use Symfony\Component\HttpFoundation\Session\Session;

class GlobalKeeper
{
    public $session;
    public function __constructor(){
        $session = new Session();
        $session->start();
        if(null !==$session->get("test")) $session->set("test",0);
    }
    public function startfordummy(){
 

           $session = new Session();
            $session->start();
            if(null !==$session->get("test")) $session->set("test",0);
        }
    
        public function getCounter()
        {
            return $this->session->get("test");
        }
    
        public function increment()
        {
            $this->session->set("test", $session->get("test") + 1);
        }
    }

此代码还导致调用 null 上的成员函数 set()

标签: phpsymfonysession

解决方案


文档是一件可怕的浪费。

class DefaultController extends AbstractController
{
    /**
     * @Route("/counter", name="counter")
     */
    public function counter(SessionInterface $session)
    {
        $counter = $session->has('counter') ? (int)$session->get('counter') : 0;
        $counter++;
        $session->set('counter',$counter);

        return $this->render('default/counter.html.twig', [
            'counter' => $counter,
        ]);
    }
}

告诉你的导师,他们不仅在教你课程方面做得很糟糕,而且在教你如何搜索信息方面做得很糟糕。


推荐阅读