Мы используем много PHP-модулей здесь для создания объектов, которые используются для создания наших веб-страниц.
У нас есть модули для:
Каждый объект преобразуется в HTML для PHP, вызывая метод item render()
; однако ни один из модулей не содержит javascript.
Я хочу создать модуль Contact Block, который будет содержать стандартные контактные элементы (имя, адрес, город, штат, телефон, электронная почта, blah-blah-blah).
Я создал файл javascript с синтаксисом jquery для проверки элементов управления в моем блоке контактов, но я не могу получить свой тег, помещенный в HTML раздел.
Есть ли еще способ заставить javascript работать?
public function render() {
$output = '<script type="text/javascript" src="/lib/js/ContactBlock.js"></script>\n';
// other code ... $output .= '<fieldset><legend>'.$this->groupName.'</legend>\n';
return($output);
}
ОБНОВИТЬ:
изъяты во избежание нарушения авторских прав
Это может быть слишком упрощенным, но в основном это превращает HTML в браузер.
Я хочу добавить элементы Contact Block с помощью javascript для проверки полей.
Строка $form = new HTMLForm('Blank Page')
создает HTML-страницу с тег уже в нем.
Есть ли способ добавить мой блок контактов с подтверждением javascript, если тег уже закрыт?
ОБНОВЛЕНИЕ 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');
PhpLabel
класс PhpLabel
чтобы он вместо этого создал правильно сформированный <script>
return
наecho
...