2017-06-28 3 views
0

J'ai probablement un problème de compréhension comment fonctionne le routage. J'ai essayé un peu avec zend-authentication, vous pouvez voir le controlercode ci-dessous. Si l'authentification est valide, je veux un routage vers une autre action d'index du contrôleur. Devrait être assez simple, mais le routage ne fonctionne pas, je reste à la forme de connexion. J'ai ajouté un écho juste pour voir où je suis après l'authentification et l'authentification est valide. Voici le code:routage après l'authentification ne fonctionne pas correctement

$form = new LoginForm(); 
    //return ['form' => $form]; 
    $form->get('submit')->setValue('Login');  
    //echo "hier"; 
    //$this->layout()->setTemplate('layout/login-layout'); 
    $request = $this->getRequest(); 

    if (! $request->isPost()) {  
     return ['form' => $form]; 
    } 
    else { 
     $username=$request->getPost('accessname'); 
     $password=$request->getPost('passwort'); 
     //echo $password; 
     $adapter = $this->authService->getAdapter(); 
     $adapter->setIdentity($request->getPost('accessname')); 
     $adapter->setCredential($request->getPost('passwort')); 

     $result = $this->authService->authenticate(); 

     if ($result->isValid()){ 
      echo "valide"; 
      //return $this->redirect()->toRoute('import'); 
      return $this->redirect()->toRoute('import', ['action' => 'index']); 
     } 
     else{ 
      return ['form' => $form, 'messages' => $result->getMessages()]; 
     } 
    } 

comme vous pouvez le voir J'ai essayé plusieurs possibilités. L'autre contrôleur est placé dans le même module.

Ici supplémentaire l'action d'index du contrôleur de destination.

Je ne suis pas fini là, à cause du faux routage j'ai basculé tout le reste, ainsi il montre juste l'echotexte quand je débarque là.

public function indexAction() 
    { 
     echo "importcontroller"; 
    // $result = $this->authService->has 
    // $auth=Zend_Auth::getInstance(); 
//  $adapter = $this->authService->getAdapter(); 

//  if(!$this->authService->hasIdentity()) 
//  { 
//   return $this->redirect()->toRoute('./index/index'); 
//  } 
//  else { 
//   return new ViewModel([ 
//    'projects' => $this->projectTable->fetchAll(), 
//     ]); 
//  } 

    } 

EDIT1: Ajouter module.confg.php

'router' => [ 
      'routes' => [ 
        'import' => [ 
          'type' => Segment::class, 
          'options' => [ 
            'route' => '/import[/:action[/:id]]', 
            'constraints' => [ 
              'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
              'id'  => '[0-9]+', 
            ], 
            'defaults' => [ 
              'controller' => Controller\ImportController::class, 
              'action'  => 'index', 
            ], 
          ], 

        ], 
        'project' => [ 
          'type' => Segment::class, 
          'options' => [ 
            'route' => '/project[/:action[/:id]]', 
            'constraints' => [ 
              'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
              'id'  => '[0-9]+', 
            ], 
            'defaults' => [ 
              'controller' => Controller\ProjectController::class, 
              'action'  => 'index', 
            ], 
          ], 

        ], 
        'unit' => [ 
          'type' => Segment::class, 
          'options' => [ 
            'route' => '/unit[/:action[/:id]]', 
            'constraints' => [ 
              'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
              'id'  => '[0-9]+', 
            ], 
            'defaults' => [ 
              'controller' => Controller\UnitController::class, 
              'action'  => 'index', 
            ], 
          ], 

        ], 

        'index' => [ 
          'type' => Segment::class, 
          'options' => [ 
            'route' => '/index[/:action[/:id]]', 
            'constraints' => [ 
              'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
              'id'  => '[0-9]+', 
            ], 
            'defaults' => [ 
              'controller' => Controller\IndexController::class, 
              'action'  => 'index', 
            ], 
          ], 

        ], 
        'user' => [ 
          'type' => Segment::class, 
          'options' => [ 
            'route' => '/user[/:action[/:id]]', 
            'constraints' => [ 
              'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
              'id'  => '[0-9]+', 
            ], 
            'defaults' => [ 
              'controller' => Controller\UserController::class, 
              'action'  => 'index', 
            ], 
          ], 

        ], 
        'followup' => [ 
          'type' => Segment::class, 
          'options' => [ 
            'route' => '/followup[/:action[/:id]]', 
            'constraints' => [ 
              'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
              'id'  => '[0-9]+', 
            ], 
            'defaults' => [ 
              'controller' => Controller\FollowupController::class, 
              'action'  => 'index', 
            ], 
          ], 

        ], 

Répondre

1

Pouvez-vous afficher le contenu de module.config.php avec la configuration de routage?

Peut-être que votre itinéraire était erroné et rediriger vers la même page où vous êtes avant l'authentification correcte?

P.s. Je pense, vous devriez toujours filtrer les données de la forme et l'obtenir par la fonction $form->getDate(). Bien sûr, avant d'appliquer les filtres appropriés.

ce concept est décrit dans le tutoriel zend framework:

https://docs.zendframework.com/tutorials/getting-started/forms-and-actions/

+0

J'ai effectué mon post. Je n'ai pas compris votre ps, pourriez-vous me l'expliquer? –

+0

Votre 'module.config.php' semble bien, peut-être avez-vous redirigé dans la fonction' Module.php' ou 'onDispatch' dans' ImportController.php'? – Valvadis

+0

Non, je ne le fais pas car un peut appeler l'itinéraire directement et ensuite il sera trouvé –