Symfony1 如何在模型中获取Symfony会话变量?
如何在symfony模型中传递会话变量而不使用Symfony1 如何在模型中获取Symfony会话变量?,symfony1,session-variables,Symfony1,Session Variables,如何在symfony模型中传递会话变量而不使用sfContext::getInstance()?会话变量应存储为用户属性 // in an action: $this->getUser()->setAttribute('current_order_id', $order_id); 看看如何找回它 // later on, in another action, you can get it as: $order_id = $this->getUser()->getAtt
sfContext::getInstance()
?会话变量应存储为用户属性
// in an action:
$this->getUser()->setAttribute('current_order_id', $order_id);
看看如何找回它
// later on, in another action, you can get it as:
$order_id = $this->getUser()->getAttribute('current_order_id', false);
if($order_id!==false)
{
// save to DB
} else {
$this->getUser()->setFlash('error', 'Please selected an order before you can do stuff.');
// redirect and warn the user to selected an order
$this->redirect('orders');
}
会话变量应存储为用户的属性
// in an action:
$this->getUser()->setAttribute('current_order_id', $order_id);
看看如何找回它
// later on, in another action, you can get it as:
$order_id = $this->getUser()->getAttribute('current_order_id', false);
if($order_id!==false)
{
// save to DB
} else {
$this->getUser()->setFlash('error', 'Please selected an order before you can do stuff.');
// redirect and warn the user to selected an order
$this->redirect('orders');
}
推荐的方法称为依赖项注入,其工作原理如下:在模型文件中创建一个
setUser()
方法,将给定参数保存到私有属性:
class Foo {
private $_user;
public function setUser(myUser $user) {
$this->_user = $user;
}
// ... later:
public function save(Doctrine_Connection $conn = null) {
// use $this->_user to whatever you need
}
}
这看起来很笨拙,因为它是。但是如果你不回答这个问题,你想做什么?我没有别的选择
推荐文章:
- -Fabien Povertier博客上的系列文章
- -维基百科上的详细设计模式
setUser()
方法,将给定参数保存到私有属性:
class Foo {
private $_user;
public function setUser(myUser $user) {
$this->_user = $user;
}
// ... later:
public function save(Doctrine_Connection $conn = null) {
// use $this->_user to whatever you need
}
}
这看起来很笨拙,因为它是。但是如果你不回答这个问题,你想做什么?我没有别的选择
推荐文章:
- -Fabien Povertier博客上的系列文章
- -维基百科上的详细设计模式
sfContext::getInstance()
时,它通常是坏模型的标志。您想做什么?如果您想在会话期间保留一些值,可以将它们作为属性添加到用户,例如,您是否正在寻找使用管理生成器创建的后端应用程序?Hi Grad。。。如前所述,我在lib类中使用setAttribute作为userid…我需要在save方法中访问model类中的会话…但我知道sfContext::getInstance()是个坏主意,所以我正在寻找替代方法…欢迎提供更多信息?模型中需要什么类型的“会话”变量?它是在哪里创建/分配的,需要在哪里,等等。因为,正如您所说,当您需要模型中的sfContext::getInstance()
时,它通常是坏模型的标志。您想做什么?如果您想在会话期间保留一些值,可以将它们作为属性添加到用户,例如,您是否正在寻找使用管理生成器创建的后端应用程序?Hi Grad。。。如前所述,我在lib类中使用userid的setAttribute…我需要在save方法中访问model类中的会话…但我知道sfContext::getInstance()这是个坏主意,所以我在寻找替代方案…这绝不是问题的答案。Pibeiro我不是在寻找你给出的答案…我是在不使用sfContext::getInstance()的情况下在save方法中获取model类中的会话…但是你从何处保存模型?你必须从一个动作中保存它,对吗?这绝不是问题的答案。Pibeiro我不是在寻找你给出的答案…我是在不使用sfContext::getInstance()的情况下在save方法中获取模型类中的会话…但是你从哪里保存模型?你必须从一个动作中保存它,对吗?嗨,maerlyn…正如前面提到的,我在lib类中使用userid的setAttribute…我需要在save方法中访问model类中的会话…但我知道sfContext::getInstance()是个坏主意,所以我正在寻找替代方法..我理解这一点,并给了你一个替代方法。但是如果不告诉你为什么需要身份证,我就不能给你一个更好的选择。@Maerlyn:我也用同样的方法试过。但我无法在模型中获取用户id。$this->\u用户在保存函数时返回空。帮帮我。你确定你正在保存你给用户设置的记录吗?@Maerlyn:基本上,我是在这里用当前登录的用户id lib/model/contest.class.php保存竞赛。我正在使用sfdoctrineguardplugin进行身份验证。我该怎么做呢。嗨,maerlyn…正如前面提到的,我在lib类中使用setAttribute作为userid…我需要在save方法中访问model类中的会话…但我知道sfContext::getInstance()是个坏主意,所以我正在寻找替代方法..我理解这一点,并为您提供了一个替代方法。但是如果不告诉你为什么需要身份证,我就不能给你一个更好的选择。@Maerlyn:我也用同样的方法试过。但我无法在模型中获取用户id。$this->\u用户在保存函数时返回空。帮帮我。你确定你正在保存你给用户设置的记录吗?@Maerlyn:基本上,我是在这里用当前登录的用户id lib/model/contest.class.php保存竞赛。我正在使用sfdoctrineguardplugin进行身份验证。我怎样才能做到这一点。