Ankündigung

Einklappen
Keine Ankündigung bisher.

FileLoader mit dem "annotation type" bekanntmachen - wie?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Symfony] FileLoader mit dem "annotation type" bekanntmachen - wie?

    Ich habe eine symfony -App, dort habe ich in die routes.yaml den Controller eingetragen, der aber nicht erkannt wird.

    Hier die Datei ./config/routes/routes.yaml:

    HTML-Code:
    # config/routes.yaml
    
    app:
        path: /
        controller: App\Controller\StudentController::newAction
    Hier der Controller ./src/Controller/StudentController.php

    PHP-Code:
    <?php  
    namespace AppBundle\Controller;  

    use 
    AppBundle\Entity\StudentForm
    use 
    AppBundle\Form\FormValidationType

    use 
    Symfony\Bundle\FrameworkBundle\Controller\Controller
    use 
    Symfony\Component\HttpFoundation\Request
    use 
    Sensio\Bundle\FrameworkExtraBundle\Configuration\Route

    use 
    Symfony\Component\HttpFoundation\Response
    use 
    Symfony\Component\Form\Extension\Core\Type\TextType
    use 
    Symfony\Component\Form\Extension\Core\Type\DateType
    use 
    Symfony\Component\Form\Extension\Core\Type\SubmitType
    use 
    Symfony\Component\Form\Extension\Core\Type\ChoiceType
    use 
    Symfony\Component\Form\Extension\Core\Type\PasswordType
    use 
    Symfony\Component\Form\Extension\Core\Type\RangeType
    use 
    Symfony\Component\Form\Extension\Core\Type\EmailType
    use 
    Symfony\Component\Form\Extension\Core\Type\CheckboxType
    use 
    Symfony\Component\Form\Extension\Core\Type\ButtonType
    use 
    Symfony\Component\Form\Extension\Core\Type\TextareaType
    use 
    Symfony\Component\Form\Extension\Core\Type\PercentType
    use 
    Symfony\Component\Form\Extension\Core\Type\RepeatedType;  

    class 
    StudentController extends Controller {    
       
    /** 
          * @Route("/student/new") 
       */ 
       
    public function newAction(Request $request) {  
          
    $stud = new StudentForm(); 
          
    $form $this->createFormBuilder($stud
             ->
    add('studentName'TextType::class)
             ->
    add('studentId'TextType::class) 
             ->
    add('password'RepeatedType::class, array( 
                
    'type' => PasswordType::class, 
                
    'invalid_message' => 'The password fields 
                must match.'
    'options' => array('attr' => array('class' => 'password-field')), 
                
    'required' => true'first_options'  => array('label' => 'Password'), 
                
    'second_options' => array('label' => 'Re-enter'), 
             )) 

             ->
    add('address'TextareaType::class) 
             ->
    add('joined'DateType::class, array( 
                   
    'widget' => 'choice'
             )) 

             ->
    add('gender'ChoiceType::class, array( 
                
    'choices'  => array( 
                   
    'Male' => true
                   
    'Female' => false
                ), 
             )) 

             ->
    add('email'EmailType::class) 
             ->
    add('marks'PercentType::class) 
             ->
    add('sports'CheckboxType::class, array( 
                
    'label'    => 'Are you interested in sports?''required' => false
             )) 

             ->
    add('save'SubmitType::class, array('label' => 'Submit')) 
             ->
    getForm();  
             return 
    $this->render('student/new.html.twig', array( 
                
    'form' => $form->createView(), 
             )); 
       } 
    }


    Jetzt motzt symfony rum: Class "AppBundle\Controller\StudentController" does not exist in C:\....../config\../src/Controller/ (which is being imported from "C:\...../config/routes.yaml"). Make sure there is a loader supporting the "annotation" type.

    Wenn ich in der routes.yaml-Datei folgende Zeile hinzufüge…

    type: annotation

    ... ändert sich nix.

    Ich konnte auch durch das Anlegen einer annotations.yaml nichts ändern. Kennt jemand dieses Problem?



  • #2
    Der Standwert der routes.yaml wäre das folgende. Damit werden automatisch alle Controller erkannt.
    Den Rest steuerst du über die Annotations in deinen Controllern.

    Code:
    controllers:
        resource: ../../src/Controller/  # ../src/Controller falls du die routes.yaml nicht im Unterordner config/routes/routes.yaml hast.
        type: annotation

    Kommentar

    Lädt...
    X