Я пишу задачу Phing, которая должна быть подключена к базе данных, используя данные, предоставленные пользователем.Phing: Reprompt после недействительных данных о подключении к базе данных
Я могу запросить пользователя для базы данных хоста/пользователя/пароля/базы данных и проверить детали, используя PDOSQLExecTask.
Что я не знаю, как это сделать: повторите запрос пользователю, чтобы повторно предоставить детали, если они признаны недействительными, и продолжайте повторное приглашение, пока они не поймут это правильно.
Следующий шаг был моей попыткой, но это ошибки, потому что Phing не нравится, когда задача вызывает себя.
<target name="prompt-and-test-database-connection">
<trycatch>
<try>
<input propertyName="db.host" message="Database host" promptChar=":" />
<input propertyName="db.user" message="Database user" promptChar=":" />
<input propertyName="db.pass" message="Database password" promptChar=":" />
<input propertyName="db.name" message="Database name" promptChar=":" />
<echo message="Testing connection..." />
<pdosqlexec url="mysql:host=${db.host};dbname=${db.name}" userid="${db.user}" password="${db.pass}" onerror="continue">
USE `${db.name}`;
</pdosqlexec>
</try>
<catch>
<echo level="error">Invalid database connection details. Please try again.</echo>
<phingcall target="prompt-and-test-database-connection" />
</catch>
</trycatch>
</target>