I have a problem with namespaces in connecting my entity class to an abstract type class.
I need to create a AbstractTypeclass I called BlogFactory . I intend to use it in my function of createActionmy BlogController.php Entity class to create blog entries.
My BlogFactoryclass is created in the Form / Blog directory of my package, as the tree structure shows.
.
.
.
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
.
.
.
In the entity class, BlogController.phpI include the following use command :
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{
.
.
.
with the following function createAction:
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;
}
Here is the code in the class BlogFactory:
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';
}
}
However, my problem is that I get the following error:
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
, .
UPDATE:
Gnucki, Blogger\BlogBundle\Form\Blog; BlogFactory.php Blogger\BlogBundle\Form\Blog\BlogFactory; BlogController.php, :
Attempted to load class "Blog" from namespace "Blogger\BlogBundle\Controller".
Did you forget a "use" statement for another namespace?