Вызов помощника Symfony из php-скрипта, необходимого для Ajax? - PullRequest
0 голосов
/ 26 января 2010

N00b вопрос:

Я использую Symfony с Doctrine. У меня есть форма, где я добавил небольшую проверку Jquery & Ajax о том, существует ли уже введенное в форму имя пользователя. JQuery вызывает короткий PHP-скрипт в моем веб-корне, который проверяет базу данных MySQL и возвращает true / false, который затем используется для определения сообщения об ошибке.

Однако, если возможно, я бы хотел переместить вызов базы данных в вспомогательную функцию Symfony, которая затем возвращает истину / ложь, а не всю информацию о соединении и т. Д. В моем веб-корне. Но я не могу правильно вызвать вспомогательную функцию - все остальные компоненты функционируют нормально.

Вот что у меня есть в моем маленьком PHP-скрипте:

$availability = GenericHelper::checkUsername();  // a public static function
echo $availability; // returns true/false to Jquery

Кто-нибудь? Благодаря.

Ответы [ 2 ]

2 голосов
/ 26 января 2010

Правильно ли вы загрузили помощника?

sfContext::getInstance()->getConfiguration()->loadHelpers('Generic');

Тогда вы сможете звонить checkUsername() напрямую.

Или вы можете попытаться поместить GenericHelper.class.php в каталог lib /, таким образом, он будет автоматически загружен.

1 голос
/ 26 января 2010

Помощники не предназначены для такой работы (они предназначены только для «просмотра» связанной работы, то есть для генерации HTML и т. Д.).

Вместо этого вам следует создать действие (либо в том же контроллере, что и в вашей форме, либо в выделенном контроллере AJAX, я лично считаю, что первый вариант легче поддерживать), которое будет выполнять проверку имени пользователя с помощью метода модели. См. http://gist.github.com/286797 для примера кода, как это сделать (обратите внимание, что этот код не был проверен и, следовательно, не мог работать ootb).

Затем вы направите свой запрос Ajax на это действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...