我很喜欢symfony。我想在我的代码中使用Session_id
当我更改php.ini并设置session.auto.start变量 true 时,我发出symfony错误 在false之后这个参数我应该使用
$session = new Session();
但是当我执行indexAction()时,我现在遇到了一个新错误:
An exception has been thrown during the rendering of a template ("Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\artgirl\app\cache\dev\classes.php line 105") in "DotArtBundle:Basket:index.html.twig".
500 Internal Server Error - Twig_Error_Runtime
1 linked Exception: ErrorException »
BasketController:
class BasketController extends Controller {
public function getStaticAction(){
$session = new Session();
$session->start();
$em = $this->getDoctrine()->getManager();
$sql = "Select ... where basket_id = '".$session->getId()."'";
}
//###############################################
public function indexAction(){
$user = new User();
$form = $this->createFormBuilder($user)
->add('username', 'text')
->add('password', 'text')
->add('email', 'text')
->getForm();
return $this->render('DotArtBundle:Artist:register.html.twig', array('form' => $form->createView(l)));
}
}
我在base.html.twig中使用getStaticAction()
{% set vPrice = render(controller('DotArtBundle:Basket:getStatic')) %}
答案 0 :(得分:2)
在版本2.1中,他们改变了会话的工作方式,而不是自动启动它们是按需启动的。
据我了解,Symfony 2会话与PHP会话不兼容,Symfony取代了许多基本PHP会话功能,因此您需要在php.ini中关闭自动启动并使用以下内容初始化会话: p>
use Symfony/Component/HttpFoundation/Session/Session;
$session = new Session();
$session->start();
然后你应该可以在任何需要ID的地方做这样的事情:
$session = $this->getRequest()->getSession()->get('id');
Symfony explains their sessions handling over here,可能值得一读。