Все, что я хочу сделать, это дать формам ввода joomla базовый стиль начальной загрузки:
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">some text</span>
<input class="form-control" />
Я использую миксин с меньшим количеством, чтобы применить стили к существующему классу ввода
//input form fields
.validate-email{
.form-control;
}
И я переопределяю com_users / remind.php для других html-изменений.
Но есть некоторый php-код, который портит вывод. Это оригинальный код из com_users / remind.php, который я переопределяю:
<fieldset>
<?php foreach ($this->form->getFieldset($fieldset->name) as $name => $field) : ?>
<div class="control-group">
<div class="control-label">
<?php echo $field->label; ?>
</div>
<div class="controls">
<?php echo $field->input; ?>
</div>
</div>
<?php endforeach; ?>
</fieldset>
Мне не нужна метка (см. Выше), поэтому я удалил эти строки. Я изменил все доступные классы и сделал миксин для поля ввода (см. Выше).
Вот как это выглядит сейчас:
<fieldset>
<?php foreach ($this->form->getFieldset($fieldset->name) as $name => $field) : ?>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">E-Mail</span>
<?php echo $field->input; ?>
</div>
</div>
<?php endforeach; ?>
</fieldset>
НО окружающие php-строки в этом коде делают что-то странное, чего я не понимаю.
Вывод выглядит так:
<fieldset>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">E-Mail</span>
<input type="email" aria-required="true" required="" size="30" value="" id="jform_email" class="validate-email invalid" name="jform[email]" aria-invalid="true"> </div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">E-Mail</span>
</div>
</div>
</fieldset>
Итак, первая группа форм — вывод — это то, что я хочу. Вторая группа форм — output обычно является соответствующей меткой для поля ввода. Мне нужно избавиться от этого второго вывода поля формы.
Я не занимаюсь хакингом ядра, я ищу способ переопределить вывод поля ввода joomla.
Я не хочу создавать свои собственные поля формы, как предлагают документы: http://docs.joomla.org/Creating_a_custom_form_field_type
Мне либо нужно избавиться от этого «foreach», не создавая php-ошибок, но я понятия не имею, как изменить этот php-код.
Или мне нужно загрузить это поле ввода для электронной почты без каких-либо дополнительных вещей, но я не знаю, как это сделать.
Я попытался создать свое собственное переопределение поля, добавив
JForm::addFieldPath(JPATH_THEMES . '/MyTemplate/html/fields');
и скопировать файл remind.php в эту папку.
но он не загружает мой пользовательский remind.php.
В документах упоминается переопределение getLabel
public function getLabel() {
return '<span style="text-decoration: underline;">' . parent::getLabel() . '</span>';}
Но я не могу понять, как использовать это на getInput
Если у кого-то есть правильные php-линии или другое более простое решение, пожалуйста, дайте мне знать. Я был на проб и ошибок некоторое время, и у меня заканчиваются идеи.
Спасибо ларс
Наконец, я нашел способ добавить пользовательские поля и визуализировать отдельные поля ввода (спасибо Брайану). Это дает мне полный контроль над выводом полей формы ввода joomla, он защищен от обновления и все файлы находятся в папке MyTemplate. В основном это переопределение. Я показываю весь процесс для remind.php, найденного в Joomla / components / com_users / remind:
Я создаю com_users-override в моей папке-шаблоне, копируя все файлы из
joomla / components / com_users / views / напомнить
Joomla / шаблоны / MyTemplate / html / com_users / напомнить
Я добавляю эти строки в remind.php:
$this->form->reset( true );
// сбросить форму xml, загруженную представлением
$this->form->loadFile( dirname(__FILE__) . DS . "remind.xml");
// загрузить мою собственную версию remind.xml, используя константу FILE
Теперь я могу использовать свой собственный remind.xml из той же папки.
И я добавляю следующие строки в этот XML:
hint="This is the placeholder-text"class="form-control"
Весь файл выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<form>
<fieldset name="default" label="COM_USERS_REMIND_DEFAULT_LABEL">
<field name="email" type="email"hint="My Placeholder"class="form-control"description="COM_USERS_FIELD_REMIND_EMAIL_DESC"label="COM_USERS_FIELD_REMIND_EMAIL_LABEL"required="true"size="30"validate="email"/>
<field
name="captcha"type="captcha"label="COM_USERS_CAPTCHA_LABEL"description="COM_USERS_CAPTCHA_DESC"validate="captcha"/>
</fieldset>
</form>
Конечно, вы можете добавить любые строки, которые вы хотите.
Теперь я изменяю default.php в моей папке Joomla / templates / MyTemplate / html / com_users / remind -. Это те же строки, которые предлагает Брайан (извините, форматирование здесь не работает):
Эл. почта
форма-> getInput ( ‘электронная почта’); ?>
Это все.
Вывод html выглядит так:
<fieldset>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">E-Mail</span>
<input type="email" aria-required="true" required="" placeholder="My Placeholder" size="30" value="" id="jform_email" class="validate-email form-control" name="jform[email]"> </div>
</div>
</fieldset>
Хорошо, я знаю, что в этом посте есть код, который не отображается должным образом, но я не могу понять, как это исправить, и мне пока не разрешено публиковать скриншоты. Простите за это.
Если вы хотите отказаться от цикла foreach и вручную визуализировать отдельные поля, вы можете использовать визуализацию полей по отдельности непосредственно из объекта JForm.
<fieldset>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">E-Mail</span>
<?php echo $this->form->getInput('email'); ?>
</div>
</div>
<div class="form-group">
<div class="input-group">
<?php echo $this->form->getInput('captcha'); ?>
</div>
</div>
</fieldset>