Перекрестная проводка это отличный инструмент , который аккуратно решает проблему, изначально отправленную Sam :
] Чтобы установить Hardlink, убедитесь, что вы установили homebrew , затем запустите:
brew install hardlink-osx
После установки создайте жесткую ссылку с помощью:
hln [source] [destination]
Я также заметил, что команда unlink
не работает на снежном леопарде, поэтому я добавил опцию отсоединения:
hln -u destination
Код доступен в Github для тех, кто заинтересован: https://github.com/selkhateeb/hardlink
Вы можете передать html-атрибуты в метод render на форме:
<?php echo $form["field_name"]->render(array("onfocus" => "alert('focused!');")) ?>
Вы также можете установить атрибут "class" в массиве options и использовать jQuery для добавления javascript в поле.
Правильный способ сделать это - создать отдельный файл .js и включить его непосредственно в ваше представление, чтобы он по-прежнему следовал шаблону MVC.
jQuery может захватить ваше поле формы просто так, как фреймворк формы дает каждому полю уникальный идентификатор, который может использоваться jQuery в вашем файле .js для установки .focus или чего угодно.
Держите его в чистоте и легко поддерживайте каждый уровень вашего приложения :)
вам следует расширить класс формы (который уже должен быть производным от 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 является специфическим для виджета, его не нужно повторять для каждого класса формы, использующего его.
Надеюсь, это вам поможет!