使用Captcha与Symfony2(2.8)

时间:2016-01-27 10:06:15

标签: php symfony bundle captcha symfony-2.8

我使用以下Instruction安装了Captcha软件包:

  1. "gregwar/captcha-bundle": "1.0.0"添加到require
  2. 中的composer.json部分
  3. 在root中运行Windows PowerShell并致电php composer.phar update
  4. 控制台输出
  5.   

    警告:PHP启动:无法加载动态库   'C:\ xampp \ php \ ext \ php_yaml.dll' - Niemo┐nodnnalečŠokreťlonego   modu│u。在第0行的未知中使用加载作曲家存储库   包信息更新依赖项(包括require-dev)   无需安装或更新生成自动加载文件   Incenteev \ ParameterHandler \ ScriptHandler :: buildParameters更新   “app / config / parameters.yml”文件   SENSIO \捆绑\ DistributionBundle \作曲\ ScriptHandler :: buildBootstrap

         

    警告:PHP启动:无法加载动态库   'C:\ xampp \ php \ ext \ php_yaml.dll' - Niemo┐nodnnalečŠokreťlonego   modu│u。在第0行的未知中   SENSIO \捆绑\ DistributionBundle \作曲\ ScriptHandler :: clearCache

         

    警告:PHP启动:无法加载动态库   'C:\ xampp \ php \ ext \ php_yaml.dll' - Niemo┐nodnnalečŠokreťlonego   modu│u。在第0行的未知中

         

    //使用debug true清除dev环境的缓存

         

    [ok]“dev”环境(debug = true)的缓存已成功完成   清零。

         

    Sensio公司\捆绑\ DistributionBundle \作曲\ ScriptHandler :: installAssets

         

    警告:PHP启动:无法加载动态库   'C:\ xampp \ php \ ext \ php_yaml.dll' - Niemo┐nodnnalečŠokreťlonego   modu│u。在第0行的未知中

         

    尝试将资源安装为相对符号链接。

            Bundle                 Method / Error   
    
         

    警告FrameworkBundle副本
      警告JMSTranslationBundle副本

         

    ! [注意]有些资产是通过副本安装的。如果您进行了更改   这些资产你必须再次运行这个命令。

         

    [确定]所有资产都已成功安装。

         

    Sensio公司\捆绑\ DistributionBundle \作曲\ ScriptHandler :: installRequirementsFile   SENSIO \捆绑\ DistributionBundle \作曲\ ScriptHandler :: prepareDeploymentTarget

    1. 按照说明我可以跳过此步骤

      // app/autoload.php
      
      $loader->registerNamspaces(array(
          // ...
          'Gregwar' => __DIR__.'/../vendor/bundles',
      ));
      
    2. 但是我的autoload.php文件看起来如下:

      use Doctrine\Common\Annotations\AnnotationRegistry;
      use Composer\Autoload\ClassLoader;
      
      error_reporting(error_reporting() & ~E_USER_DEPRECATED);
      
      $loader = require __DIR__.'/../vendor/autoload.php';
      
      AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
      
      return $loader;
      
      1. 我启用了捆绑包:

        // app/appKernel.php
        
        public function registerBundles()
        {
            $bundles = array(
                // ...
                new Gregwar\CaptchaBundle\GregwarCaptchaBundle(),
            );
        }
        
      2. 上次安装步骤是将gregwar_captcha: ~添加到app/config/config.yml并完成。

      3. 现在我正试图在我的控制器中使用它。

            public function registrationAction(Request $request)
            {
                $user = new Models\User();
        
                $form = $this->createFormBuilder($user)
                    ->add('username', 'Symfony\Component\Form\Extension\Core\Type\TextType')
                    ->add('birth', 'Symfony\Component\Form\Extension\Core\Type\DateType')
                    ->add('captcha', 'captcha')
                    ->add('save', 'Symfony\Component\Form\Extension\Core\Type\SubmitType', array('label' => 'Register'))
                    ->getForm();
        
                $form->handleRequest($request);
        
        
        
                return $this->render(
                     'CassyW2Bundle:User:registration.html.twig',
                     array(
                        'form' => $form->createView(),
                    )
                );
            }
        

        我收到错误:

        Compile Error: Declaration of Gregwar\CaptchaBundle\Type\CaptchaType::buildView() must be compatible with Symfony\Component\Form\FormTypeInterface::buildView(Symfony\Component\Form\FormView $view, Symfony\Component\Form\FormInterface $form, array $options)
        

        我哪里错了?

3 个答案:

答案 0 :(得分:1)

Doc。对于您的symfony版本,您需要此捆绑包的另一个版本。尝试安装它而不在composer.json中提供版本。

答案 1 :(得分:0)

根据警告,尝试通过从PEAR的sitweb https://pecl.php.net/package/yaml下载来安装php_yaml扩展程序。

选择稳定版本并在解压缩时将dll复制到** C:\ xampp \ php \ ext **

答案 2 :(得分:0)

https://github.com/symfony/symfony/blob/2.7/UPGRADE-2.1.md#form

如果您检查升级文档哪个版本与Symfony 2.1 FormTypeInterface相关,那么它是一个BC break,用于 https://github.com/Gregwar/CaptchaBundle/blob/v1.0.0/Type/CaptchaType.php

因此Symfony 2.8与此捆绑版本1.0.0不兼容有版本2.0标记,请使用此,如果仍有问题打开另一个问题。