小编Bon*_*uar的帖子

如何找出Python警告的来源

使用Pandas,我仍然是Python的新手,我在调试Python脚本时遇到了一些问题.

我收到以下警告信息:

[...]\pandas\core\index.py:756: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
return self._engine.get_loc(key)
Run Code Online (Sandbox Code Playgroud)

而且无法找到它的来源.

经过一些研究,我试图在Pandas lib文件(index.py)中做到这一点:

try:
    return self._engine.get_loc(key)
except UnicodeWarning:
    warnings.warn('Oh Non', stacklevel=2)
Run Code Online (Sandbox Code Playgroud)

但这并没有改变警告信息.

python debugging warnings pandas

30
推荐指数
2
解决办法
6010
查看次数

Symfony 2:获取选择字段类型的可用选项

1)有symfony方法吗?

我有一个基本表单(没有映射到数据库),有一些选择字段,例如:

    $builder->add('civility', 'choice',  array('choices'=> array('m' => 'M.', 'mme' => 'Mme', 'mlle' => 'Mlle')))
Run Code Online (Sandbox Code Playgroud)

我怎样才能 - 在表单被提交之后 - 在动作中(或者更好的是,在模板中),检索选项的标签值而不是表单提交的值?(在这种情况下,我希望能够在模板中而不是"m"渲染"M.")

我在考虑类似的事情 $form->get("civility")->getChoiceLabel($form->get("civility")->getData())

但是我没有在文档中找到这样的东西(尽管在Symfony1中有类似的东西).

2)如果真的没有,最好的方法是什么?

因此,我正在考虑创建一些方法来实现,在表单使用的数据类中,如:..

private $choices = array("civility" => array('m' => 'M.', 'mme' => 'Mme', 'mlle' => 'Mlle'));
static public function getChoiceLabel($choice_value, $field_name)
{
    return  self::$choices[$field_name][$choice_value];
}

static public function getChoices($field_name)
{
    return self::$choices[$field_name];
}
Run Code Online (Sandbox Code Playgroud)

但问题是我们不应该在twig模板中使用静态方法(我必须使它能够在表单生成,buildForm方法中使用静态,而不是复制一些代码).

forms choicefield symfony

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

Symfony2:onKernelResponse两次调用MASTER_REQUEST

我正在使用事件监听器onKernelResponse.

尽管我用过:

if (HttpKernelInterface::MASTER_REQUEST != $event->getRequestType()) {
    return;
}
Run Code Online (Sandbox Code Playgroud)

MASTER_REQUEST在我的动作中有两次,在<!DOCTYPE html> <html> <head>等之前有一次,而另一次在布局结束后排除.

他是我的services.yml:

history.listener:
    class: VENDOR\MyBundle\Service\HistoryListener
    arguments: [@doctrine.orm.entity_manager, @logger, @history]
    tags:
        - { name: kernel.event_listener, event: kernel.controller, method: onKernelController }
        - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
Run Code Online (Sandbox Code Playgroud)

我做错什么了吗 ?

master request filter listener symfony

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

Symfony 2:从特定实体生成 SQL

我想从我的实体生成 SQL。

我知道命令 php app/console doctrine:schema:create --dump-sqldoctrine:schema:update,但显然没有办法过滤 Entities甚至不能过滤 Bundle,而只能过滤 EntityManager ?!

我错过了什么 ?我认为这是一个很常见的需求,而且很容易开发。

PS我需要它,因为我有一个与其他软件共享的旧的奇怪数据库,这并不完全是Doctrine想要的,所以如果我不过滤,我会遇到一些错误,或者在最好的情况下会出现很多无用/错误的错误修改。

sql schema entities symfony doctrine-orm

5
推荐指数
2
解决办法
7573
查看次数

Git / Github:提交丢失

这是发生的情况(我想这就是我的问题的出现方式,但不是 100% 确定):

  • 有人发送了 PR,我确实合并了它,但后来我使用 Githubrevert按钮恢复了它
  • 他用相同的提交做了另一次 PR(加上一个来纠正错误)
  • 我合并了它(使用 Githubmerge按钮)
  • 在第一个 PR 处恢复的提交已从主存储库中消失!

为什么会发生这样的事?现在怎么可能,从进行 PR 的分叉中,它说There isn't anything to compare虽然这些提交不在远程存储库的原始分支上。

最后,我怎样才能恢复这些提交?

编辑:根据要求,这是我的有趣部分git log

* | |   25f28fb Merge branch 'FooUser-develop' into develop
|\ \ \
| * \ \   73768b7 Merge branch 'develop' of https://github.com/FooUser/mainRepo into FooUser-develop
| |\ \ \
| | * | | 2e61235 Invert adresses
* | | | |   d522031 Merge branch 'develop' of https://github.com/mainUser/mainRepo into develop …
Run Code Online (Sandbox Code Playgroud)

git github revert git-merge pull-request

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

Symfony2:递归验证

我有一个带有一些验证器的实体(不是表格).

所以我使用$validator->validate($entity),但它不验证我的子对象(实体类有一些其他实体类与一些验证器).

有没有"自动"方式来做到这一点,或者我必须为$errorList->addAll($validator->validate($entity));他们每个人做?

validation recursion symfony

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

更新Symfony 2.4:"只能在处理请求时才能渲染片段."

自从我迁移到Symfony 2.4后,我收到以下错误消息:

只能在处理请求时才能渲染片段.

它正在发生,因为在某些页面上,我在一些页面中使用Twig渲染一些模板,这些模板由另一个旧框架处理,通过执行$sf2->container->get('twig')->render("MyBundle::my-template.html.twig");.

所以,是的,Symfony 2没有处理这些请求,但我还是想用Twig渲染这些模板!为什么我不能那样做(不再)?以及如何解决这个问题?

这是我在旧项目中执行"启动"SF2的代码:

$loader = require_once __DIR__.'/../../../app/bootstrap.php.cache';
Debug::enable();
require_once __DIR__.'/../../../app/AppKernel.php';

$kernel = new AppKernel('bootstrap', true);
$kernel->loadClassCache();
Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$kernel->boot();
$kernel->getContainer()->enterScope('request');
$kernel->getContainer()->set('request', $request, 'request');
$this->container = $kernel->getContainer();
Run Code Online (Sandbox Code Playgroud)

编辑:顺便说一句,它可能与此有关:Symfony 2.4在TWIG中渲染控制器会抛出"渲染片段只能在处理请求时完成".例外.虽然,我不想降级到Symfony 2.3,删除vendor目录并没有解决我的问题.

EDIT²:我发现问题是因为新的RequestStack.

HttpKernel,handleRaw(Request $request, $type = self::MASTER_REQUEST)通常将请求推送到RequestStack($this->requestStack->push($request);).所以,如果我添加一个公共方法pushRequestStack($request),HttpKernel它的工作原理..但我怎么能正确地做到这一点?我不觉得能得到任何公开的方法,$requestStackHttpKernel(这样我就可以从外部推请求)..

我不能使用"普通"方法($kernel->handle($request)),因为它会抛出一些例外,例如对于不存在的路由,或者对于已经由PHP启动的会话.

总之,有没有办法在不完全处理请求的情况下"推送"我的/任何请求到requestStack?

updating request symfony twig symfony-2.4

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

Symfony 2功能测试外部URL

无论我做什么,我总是得到一个

Symfony\Component\HttpKernel\Exception\NotFoundHttpException:"找不到[...]的路由"

$crawler->text(),当我尝试请求外部URL时$crawler = $client->request('GET', 'http://anotherdomain.com');.

我想这样做是因为我正在使用另一个virtualHost来渲染一些使用Symfony 1.2的页面,而另一些使用Symfony 2.3.

我也试过

$client = static::createClient(array(), array('HTTP_HOST' => 'anotherdomain.com'));
$client->followRedirects(true);
Run Code Online (Sandbox Code Playgroud)

但它总是试图在Symfony 2中呈现它.

url phpunit web-crawler cross-domain symfony

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