Symfony“, "utiliser" déclaration pour un autre espace de noms?”

J'ai un problème avec les espaces de noms dans la connexion de ma classe entité abstraite-type de la classe.

J'avais besoin de créer un AbstractType Classe que j'ai appelé BlogFactory. J'ai l'intention de l'utiliser dans mon la createAction fonction de mon BlogController.php classe d'Entité pour créer des entrées de blog.

Mon BlogFactory classe est créée dans le Forme/Blog répertoire de mon bundle, comme la structure de l'arbre montre.

.
.
.
src/Blogger/BlogBundle/
├── Controller
 ├── BlogController.php
 └── PageController.php
├── DataFixtures
 └── ORM
     └── BlogFixtures.php
├── Entity
 ├── Blog.php
 ├── Blog.php~
 └── Enquiry.php
├── Form
 ├── Blog
  ├── BlogFactory.php
  └── Factory.php
 └── EnquiryType.php
├── Resources
 ├── config
  ├── config.yml
  ├── routing.yml
  └── services.yml
.
.
.

Dans le BlogController.php classe d'entité, je inclure les éléments suivants utilisation instruction:

namespace Blogger\BlogBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Blogger\BlogBundle\Form\Blog\BlogFactory;

class BlogController extends Controller{
.
.
.

avec le suivant createAction fonction:

public function createAction(){   
        $form = $this->createForm(new BlogFactory(), new Blog(), 
            array(
                'action' => $this->generateUrl('blog_create'),
                'method' => 'POST',
            )
        );

        $form->add('submit', 'submit', array('label'=>'Create'));
        return $form;
    }

Voici le code dans mon BlogFactory classe:

namespace Blogger\BlogBundle\Form;

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

class BlogFactory extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('title');
        $builder->add('author');
        $builder->add('blog');
        $builder->add('image');
    }

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

Cependant, mon problème est que j'obtiens l'erreur suivante:

The autoloader expected class "Blogger\BlogBundle\Form\Blog\BlogFactory" to be defined in file "/var/www/Symfony-Blog/src/Blogger/BlogBundle/Form/Blog/BlogFactory.php". The file was found but the class was not in it, the class name or namespace probably has a typo

Je suis tout à fait bloqué et vous ne savez pas comment résoudre ce problème.

Mise à JOUR:

Comme suggéré par Gnucki, j'ai ajouté espace de noms du Blogueur\BlogBundle\Form\Blog; à mon BlogFactory.php et Blogger\BlogBundle\Form\Blog\BlogFactory; à BlogController.php, et a obtenu le légèrement différente d'erreur ci-dessous:

Attempted to load class "Blog" from namespace "Blogger\BlogBundle\Controller".
Did you forget a "use" statement for another namespace?
Vous devriez être en utilisant use Blogger\BlogBundle\Form\Blog\BlogFactory. Sans use la new BlogFactory est traité que dans le même répertoire.
Comme dans le même espace de noms.
Dans votre contrôleur, vous devez utiliser Blogger\BlogBundle\Form\Blog\BlogFactory; ou besoin d'utiliser tout le chemin en créer de nouveaux BlogFactory()
Merci pour vos réponses. Auriez-vous l'esprit en regardant le code de nouveau que je suis certain que je suis en train de faire ce que vous avez suggéré, mais j'obtiens toujours la même erreur. Je m'excuse parce que j'ai collé la mauvaise classe abstraite première fois - j'ai maintenant corrigé.
vous pourriez avoir oublié d'installer une dépendance. Cela provoque également "oublier une instruction "use" erreur".

OriginalL'auteur sisko | 2014-12-29