小编tvl*_*ooy的帖子

Behat对Symfony2用户进行身份验证

我在Symfony2/Doctrine2中使用Behat.现在,我有这个场景可以归结为"如果我已登录并进入/登录,我应该转到/取而代之":

@login
Scenario: Go to the login page while being logged in
  Given I am logged in
  When I go to "/login"
  Then I should be on "/"
Run Code Online (Sandbox Code Playgroud)

对于@login,我创建了以下内容:

/**
 * @BeforeScenario @login
 */
public function loginUser()
{
    $doctrine = $this->getContainer()->get('doctrine');
    $userRepository = $doctrine->getRepository('MyTestBundle:User');
    $user = $userRepository->find(1); // 1 = id

    $token = new UsernamePasswordToken($user, NULL, 'main', $user->getRoles());
    $this->getContainer()->get('security.context')->setToken($token);
}
Run Code Online (Sandbox Code Playgroud)

在"当我进入/登录"代码(控制器被调用)时,令牌似乎消失了(不是我想要的):

/**
 * @Route("/login", name="login")
 */
public function loginAction()
{
    $token = $this->get('security.context')->getToken();
    $fd = fopen('/tmp/debug.log', 'a');
    fwrite($fd, $token);

    // …
Run Code Online (Sandbox Code Playgroud)

symfony behat

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

主义2,十进制只能包含14位数

编辑:这只是在Doctrine 2中被证实是一个错误 http://www.doctrine-project.org/jira/browse/DDC-1112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId= 15724个#action_15724


我有一个Doctrine 2实体,值被映射为这样(使用常规的getter/setter):

/**
 * @Column(type="decimal", precision=40, scale=30)
 */
protected $someValue;

/**
 * @return decimal
 */
public function getSomeValue()
{
    return $this->someValue;
}

/**
 * @param decimal $someValue
 */
public function setSomeValue($someValue)
{
    $this->someValue = $someValue;
}
Run Code Online (Sandbox Code Playgroud)

当我从我的代码中设置该值时,该值将正确写入数据库.但是,这是我的问题,当我得到值(通过getter或\Doctrine\Common\Util\Debug::dump())时,它总是给我一个最多14位数的数字,并且它舍入值.我用默认值读取记录findById().

eg: with value 1234567890.012345678901234567890123456789 I have 1234567890.0123
eg: with value 890.0123456789012345678901234567890123456 I have 890.01234567890
Run Code Online (Sandbox Code Playgroud)

我当然想要所有数字,而不仅仅是14. MySQL中的字段声明如下:

someValue decimal(40,30) NOT NULL,

当我使用原始PHP和mysql_query()获取值时,它会正确返回.

编辑:似乎问题是Doctrine返回一个浮点数:

["someValue":protected]=> float(234567890.01235)
Run Code Online (Sandbox Code Playgroud)

怎么了,接下来应该检查什么,如何解决,有什么线索?

php doctrine-orm

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

标签 统计

behat ×1

doctrine-orm ×1

php ×1

symfony ×1