我有一个与表单类型相关联的事件监听器,它运行此代码:
$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 :(得分:0)
提供的任何解决方案都是一种解决方法。只是因为没有单一的原因你必须从表单监听器中调用MatLab。
只需验证表单,从控制器中获取所需的值,然后执行MatLab。