2015-04-15 37 views
0

我有關聯的表單類型的事件偵聽器,運行此代碼:將表單事件偵聽器的變量傳遞給控制器​​?

$builder->addEventListener(
     FormEvents::POST_SUBMIT, 
     function (FormEvent $event) use ($options) { 

      $entity = $event->getData(); 

      $baseUrl= $options['baseUrl']; 

      $fileNameOr=""; 
      $nombreFicheroInterno = $entity->getFile(); 

      $file = $entity->getFile(); 
      $fileName = $file->getClientOriginalName(); 

      $filePars = explode('.', $fileName); 
      $fileNameOr = $filePars[0]; 
      $fileExtension = $filePars[1]; 

      if ($fileExtension == 'CSV' || $fileExtension == 'csv') { 
        $fileExtensionType = 2; 
      } else if ($fileExtension == 'TXT' || $fileExtension == 'txt') { 
        $fileExtensionType = 1; 
      } 
      $separatorType= $entity->getSeparatorType()->getId(); 
      $numLineasCabecera = $entity->getHeadLinesNumber(); 
      $algoritmoTecnica = $entity->getAnalysisType()->getId(); 
      $algoritmoMetodo = $entity->getSubanalysisType()->getMethod(); 


      $filename = sha1(uniqid(mt_rand(), true)) . '.' . $nombreFicheroInterno->guessExtension(); 


      $nombreFicheroInterno->move($baseUrl . 'DBSpectra/MuestrasTemp', $filename); 


      $res=shell_exec('sh '.$baseUrl.'run_DBSpectralMatching.sh /usr/local/MATLAB/MATLAB_Compiler_Runtime/v81/ "'.$baseUrl.'" "'.$fileNameOr.'" "'.$filename.'" "['.$fileExtensionType.' '. $separatorType .' '.$numLineasCabecera.' '.$algoritmoTecnica.' '.$algoritmoMetodo. ' ' . '8888' .']"'); 

          $baseUrl . 'DBSpectra/Resultados/' . $compoundId . '-MathDecision.' . $nombreTecnica . '.txt' 
      ); 

正如你看到的,代碼越來越從提交的表單中的數據,並執行一個Matlab算法。根據算法的結果($res),響應將是一個或另一個。

如何將算法的變量$res傳遞給控制器​​以提供一個或另一個響應?或者,也許我應該直接在控制器中放置eventlistener內的代碼?

回答

0

提供的任何解決方案都是解決方法。僅僅因爲沒有單一的原因,你必須從表單監聽器中調用MatLab。

只需驗證表單,從控制器中獲取所需的值,然後執行MatLab。

相關問題