1

私はFOSOAuthServerBundleandを使用しSymfonyていますが、次のエラーが表示されます:

Could not load type "travel_oauth_server_auth"
500 Internal Server Error - Exception

これが私のservice.xmlファイルです。私は Symfony を初めて使用するので、なぜこのエラーが発生するのかわかりません。

<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>

        <service id="travel_oauth_server.authorize.form_type" class="travel\HomeBundle\Form\Type\AuthorizeFormType">
        </service>

        <service id="travel_oauth_server.authorize.form" factory-method="createNamed" factory-service="form.factory" class="Symfony\Component\Form\Form">
            <argument type="service" id="travel_oauth_server.authorize.form_type" />
            <argument>%travel_oauth_server_auth%</argument>
        </service>

        <service id="travel_oauth_server.authorize.form_handler" class="travel\HomeBundle\Form\Handler\AuthorizeFormHandler" scope="request">
            <argument type="service" id="travel_oauth_server.authorize.form" />
            <argument type="service" id="request" />
            <argument type="service" id="security.context" />
            <argument type="service" id="fos_oauth_server.server" />
        </service>

     </services>

</container>

作成したフォームは次のAuthorizeFormTypeとおりです。

<?php
namespace Travel\HomeBundle\Form\Type;

use Symfony\Component\Form\FormBuilderInterface;  
use Symfony\Component\Form\AbstractType;

class AuthorizeFormType extends AbstractType  
{  
    public function buildForm(FormBuilderInterface $builder, array $options)  
    {  
        $builder->add('allowAccess', 'checkbox', array(  
            'label' => 'Allow access',  
        ));  
    }  

    public function getDefaultOptions(array $options)  
    {  
        return array('data_class' => 'Travel\HomeBundle\Form\Model\Authorize');  
    }  

    public function getName()  
    {  
        return 'travel_oauth_server_authorize';  
    } 
}

重複の可能性がある参照の質問に従って構成ファイルを更新しますが、それでも同じエラーが発生します

parameters:
    travel_oauth_server_auth.class: Travel\HomeBundle\Form\Type\AuthorizeFormType
services:
    travel_oauth_server_auth:
           class: %travel_oauth_server_auth%
4

2 に答える 2

0

次のようにパラメーターを渡します。

<argument>%travel_oauth_server_auth%</argument>

詳細については、 Symfony2 の公式ドキュメントを参照してください。

于 2013-10-27T10:55:51.407 に答える
0

私は正直にあなたがする必要があるのは追加することだけだと思います

<service id="travel_oauth_server_auth" class="%travel_oauth_server_auth.class%" scope="request">
       ...
</service>

XML に移動し、YAML ファイル内のサービス定義を取り除きます。また、2 種類のネームスペース ルート travel と Travel が表示されます。まだサービスにタグを付ける必要があるかもしれません。http://symfony.com/doc/current/book/forms.html#defining-your-forms-as-servicesを参照してください。

parameters:
  travel_oauth_server_auth.class: Travel\HomeBundle\Form\Type\AuthorizeFormType
services:
  travel_oauth_server_auth:
    class: %travel_oauth_server_auth%

あなたが望むように、そもそも正しくありませんでした

parameters:
  travel_oauth_server_auth.class: "Travel\HomeBundle\Form\Type\AuthorizeFormType"
services:
  travel_oauth_server_auth:
    class: %travel_oauth_server_auth.class%

あなたが受け取っているエラー

ParameterNotFoundException: The service "travel_oauth_server.authorize.form" has a dependency on a non-existent parameter "travel_oauth_server_auth" :( 

のせいです

<service id="travel_oauth_server.authorize.form" factory-method="createNamed" factory-service="form.factory" class="Symfony\Component\Form\Form">
        <argument type="service" id="travel_oauth_server.authorize.form_type" />
        <argument>%travel_oauth_server_auth%</argument>
 </service>

ここで渡された 2 番目の引数が見つかりません。それを伝えるのは本当に難しいです :-) (他の「フレームワーク」と比較して)。

于 2013-11-01T00:48:14.930 に答える