내가 원하는 것은 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;
}
그리고 다른 html-changes에 대해 com_users / remind.php를 재정의하고 있습니다.
그러나 출력을 엉망으로 만드는 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-line은 이상한 일을하고 있습니다. 출력은 다음과 같습니다.
<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>
그래서 첫 번째 양식 그룹-출력은 내가 원하는 것입니다. 두 번째 양식 그룹-출력은 일반적으로 입력 필드에 해당하는 레이블입니다. 이 두 번째 양식 필드 출력을 제거해야합니다.
핵심 해킹을하지 않고 joomla 입력 필드 출력을 재정의하는 방법을 찾고 있습니다. 문서가 제안하는 것처럼 내 양식 필드를 만들고 싶지 않습니다. http://docs.joomla.org/Creating_a_custom_form_field_type
PHP 오류를 생성하지 않고 "foreach"를 제거해야하지만 해당 PHP 코드를 변경하는 방법을 모릅니다. 또는 모든 추가 항목없이 전자 메일에 대한 입력 필드를로드해야하는데 그 방법을 모르겠습니다.
추가하여 내 자신의 필드 재정의를 만들려고했습니다.
JForm::addFieldPath(JPATH_THEMES . '/MyTemplate/html/fields');
그리고 상기 폴더에 Remind.php를 복사합니다. 그러나 그것은 내 사용자 정의 resolve.php를로드하지 않습니다. 문서는 getLabel을 재정의한다고 언급합니다.
public function getLabel() {
return '<span style="text-decoration: underline;">' . parent::getLabel() . '</span>';}
하지만 getInput에서 사용하는 방법을 알아낼 수 없습니다.
누군가가 올바른 php-lines 또는 다른 더 간단한 솔루션을 가지고 있다면 pls가 알려주십시오. 나는 한동안 시행 착오를 겪었고 아이디어가 부족합니다. 고마워, Lars
마지막으로 사용자 정의 필드를 추가하고 단일 입력 필드를 렌더링하는 방법을 찾았습니다 (Brian 덕분에). 이렇게하면 joomla 입력 양식 필드의 출력을 완전히 제어 할 수 있으며 업데이트가 가능하며 모든 파일이 MyTemplate 폴더에 있습니다. 기본적으로 재정의입니다. Joomla / components / com_users / remind에서 찾을 수있는 mind.php의 전체 프로세스를 보여주고 있습니다.
joomla / components / com_users / views / remind에서 Joomla / templates / MyTemplate / html / com_users / remind로 모든 파일을 복사하여 템플릿 폴더에 com_users-override를 생성하고 있습니다.
나는 이러한 라인을 remind.php에 추가합니다.
$this->form->reset( true );
// 뷰에 의해로드 된 양식 xml을 재설정합니다.
$this->form->loadFile( dirname(__FILE__) . DS . "remind.xml");
// FILE 상수를 사용하여 내 자체 버전의 mind.xml을로드합니다.
이제 동일한 폴더에서 내 자신의 mind.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>
물론 원하는 줄을 추가 할 수 있습니다.
이제 Joomla / templates / MyTemplate / html / com_users / remind-폴더에서 default.php를 변경합니다. Brian이 제안한 것과 비슷한 줄입니다 (죄송합니다. 코드 서식은 여기서 작동하지 않습니다).
이메일 양식-> getInput ( 'email'); ?>그게 다야.
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>
좋아,이 게시물에 제대로 표시되지 않는 코드가 있다는 것을 알고 있지만 수정 방법을 알 수 없으며 아직 스크린 샷을 게시 할 수 없습니다. 그 죄송합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다