Как добавить Javascript ссылку на HTML при рендеринге объекта PHP?

Мы используем много PHP-модулей здесь для создания объектов, которые используются для создания наших веб-страниц.

У нас есть модули для:

  • Якорь (ahref)
  • кнопка
  • CheckBox
  • Поле со списком
  • DateTime
  • Эл. адрес
  • метка
  • Заметка
  • пароль
  • Телефон
  • Переключатель
  • RichTextArea
  • SubmitButton
  • Текст (TextBox)

Каждый объект преобразуется в HTML для PHP, вызывая метод item render(); однако ни один из модулей не содержит javascript.

Я хочу создать модуль Contact Block, который будет содержать стандартные контактные элементы (имя, адрес, город, штат, телефон, электронная почта, blah-blah-blah).

Я создал файл javascript с синтаксисом jquery для проверки элементов управления в моем блоке контактов, но я не могу получить свой тег, помещенный в HTML раздел.

Есть ли еще способ заставить javascript работать?

public function render() {
 $output = '\n';
 // other code ... $output .= '<fieldset><code><legend>'.$this->groupName.'</legend>\n';
 return($output);
}
</code> <p> <span>ОБНОВИТЬ:</span></p> <blockquote> <p> изъяты во избежание нарушения авторских прав</p></blockquote> <p> Это может быть слишком упрощенным, но в основном это превращает HTML в браузер.</p> <p> Я хочу добавить элементы <span>Contact Block</span> с помощью javascript для проверки полей.</p> <p> Строка <code>$form = new HTMLForm('Blank Page')</code> создает HTML-страницу с  тег уже в нем.</p> <p> Есть ли способ добавить мой <span>блок контактов</span> с подтверждением javascript, если  тег уже закрыт?</p> <p> <span>ОБНОВЛЕНИЕ 2:</span></p> <blockquote> <p> изъяты во избежание нарушения авторских прав</p></blockquote> </fieldset>
2 ответа

Вот как это сделать.

Сначала создайте этот класс:

<!--?php

//Named this way so you can make any element tag
class PhpFreeElement extends BasicHTMLEntity {

 private $strong = false;

 public function __construct($tag_type, $element_name) {

 // Set element type
 $this--->setElementType( $tag_type );

 // Specify behavior of element value
 $this->entity_value_as_content = true;

 // Specify default attributes
 if ( !empty( $name ) ) {
 $this->attr('name', $element_name);
 $this->attr('id', $element_name);
 }
 }

 public function setAttribute($name, $value)
 {
 $this->attr( $name, $value );
 }


 public function render(){

 // Open element
 $output = "<{$this->getElementType()}{$this->renderAttributes()}";

 //Add the value if any
 $output .= ">{$this->getValue()}";

 // Close element (This is not always correct. Some tags are self closing)
 $output .= "<!--{$this--->getElementType()}>";

 // Return rendered object
 return($output);
 }
}

?>

Затем вы создаете его следующим образом:

//Create script tag
$script = new PhpFreeElement('script', '');

//Set the script source
$script->setAttribute( "src", "/lib/js/ContactBlock.js" );


Не зная свою структуру в полной мере, я должен сказать, что вам, вероятно, нужен класс PhpJsScript:

<!--?php

 class PhpJsScript extends BasicHTMLEntity {

 public function __construct($url) {

 // Set element type
 $this--->setElementType('script');

 // Specify behavior of element value
 $this->entity_value_as_content = true;

 // Specify default attributes
 $this->attr('type', 'text/javascript');
 $this->attr('src', $url);
 }

 public function render(){
 // Open element
 $output = "<{$this->getElementType()}{$this->renderAttributes()}";

 // Close element
 $output .= "<!--{$this--->getElementType()}>";

 // Return rendered object
 return($output);
 }
 }

?>

Итак, теперь я думаю, вы можете назвать это с помощью:

$script = new PhpJsScript('/lib/js/ContactBlock.js');

licensed under cc by-sa 3.0 with attribution.