Nuevo en Symfony 4.3: Mejorado el autocompletado en la consola
El componente Console incluye la posibilidad de autocompletar las respuestas a las preguntas creadas mediante el helper Question. Esto es muy útil por ejemplo para autocompletar clases y entidades en el MakerBundle y así mejorar tu productividad.
El único problema es que el autocompletado solo funciona cuando sabes todas las posibles respuestas de antemano. Esto es algo imposible por ejemplo cuando las sugerencias dependen de lo que escriba el usuario y es poco práctico cuando el autocompletado puede tener muchas respuestas (por ejemplo, autocompletar los contenidos de cualquier directorio de tu equipo).
En Symfony 4.3 hemos mejorado esta funcionalidad con un nuevo método llamado
setAutocompleterCallback()
que permite generar las respuestas del
autocompletado de manera dinámica. Por ejemplo, el siguiente código muestra cómo
autocompletar lo que está escribiendo el usuario para que solo pueda elegir
archivos o directorios que existan:
use Symfony\Component\Console\Question\Question; // ... public function execute(InputInterface $input, OutputInterface $output) { // esta función se llama cada vez que el usuario modifica lo que ha escrito $callback = function (string $userInput): array { $inputPath = preg_replace('%(/|^)[^/]*$%', '$1', $userInput); $inputPath = '' === $inputPath ? '.' : $inputPath; // CUIDADO: este ejemplo permite un acceso sin restricciones al sistema de // archivos completo. En aplicaciones reales, seguramente tengas que // restringir el acceso a determinados directorios $foundFilesAndDirs = @scandir($inputPath) ?: []; return array_map(function ($dirOrFile) use ($inputPath) { return $inputPath.$dirOrFile; }, $foundFilesAndDirs); }; $question = new Question('Indica la ruta del archivo a procesar'); $question->setAutocompleterCallback($callback); $filePath = $helper->ask($input, $output, $question); }
Esta funcionalidad fue contribuida por Mikkel Paulson en el pull request #30997.
Fuente: New in Symfony 4.3: Better console autocomplete
Comentarios
Proyectos Symfony destacados
La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.