Как использовать JavaScript в формах?

Перекрестная проводка это отличный инструмент , который аккуратно решает проблему, изначально отправленную Sam :


] Чтобы установить Hardlink, убедитесь, что вы установили homebrew , затем запустите:

brew install hardlink-osx

После установки создайте жесткую ссылку с помощью:

hln [source] [destination]

Я также заметил, что команда unlink не работает на снежном леопарде, поэтому я добавил опцию отсоединения:

hln -u destination

Код доступен в Github для тех, кто заинтересован: https://github.com/selkhateeb/hardlink

1
задан Elorfin 27 July 2010 в 07:45
поделиться

3 ответа

Вы можете передать html-атрибуты в метод render на форме:

<?php echo $form["field_name"]->render(array("onfocus" => "alert('focused!');")) ?>

Вы также можете установить атрибут "class" в массиве options и использовать jQuery для добавления javascript в поле.

1
ответ дан 2 September 2019 в 23:07
поделиться

Правильный способ сделать это - создать отдельный файл .js и включить его непосредственно в ваше представление, чтобы он по-прежнему следовал шаблону MVC.

jQuery может захватить ваше поле формы просто так, как фреймворк формы дает каждому полю уникальный идентификатор, который может использоваться jQuery в вашем файле .js для установки .focus или чего угодно.

Держите его в чистоте и легко поддерживайте каждый уровень вашего приложения :)

0
ответ дан 2 September 2019 в 23:07
поделиться

вам следует расширить класс формы (который уже должен быть производным от sfForm), чтобы переопределить метод render .

Начиная с Symfony 1.4 класс sfForm не имеет метода renderJavascript. Обычно мы используем для всех наших форм и виджетов класс basse, который будет определять этот метод и переопределять метод рендеринга

class abstractOurForm extends sfFormDoctrine
{
    public function render($attributes = array())
    {
       return parent::render($attributes).
               '<script type="text/javascript">'.$this->renderJavascript().'</script>';
    }
    public function renderJavascript()
    {
        //nothing here
    }
}

. Это добавит тег javascript в конец вашей формы (если он отображается как сгенерированные с помощью echo $ form )

Когда вы переопределяете форму доктрины для реализации функциональности javascript, тесно связанной с формой html (встроенная проверка, интеграция с ajax, динамические элементы управления и т. Д.), Просто сделайте что-то вроде этого:

class myWhateverForm extends abstractOurForm
{
    public function configure()
    {
         //your widget & validators config here
    }
    public function renderJavascript() 
    {
         //here come the JS code
         $js = <<<EOT
             //example with jquery
             $(function() {
                $('#myElement').focus(function(){
                   if (window.console) console.log('you\'ve done it');
                });
             });

    EOT;
       return $js;
    }
}

Тот же шаблон применяется к нашему виджет, поэтому, если какой-то код javascript является специфическим для виджета, его не нужно повторять для каждого класса формы, использующего его.

Надеюсь, это вам поможет!

1
ответ дан 2 September 2019 в 23:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: