Google Recaptcha V3 mit Yform Formbuilder: https://github.com/akuehnis/redaxo5_modul_beispiele/blob/master/yform_google_recaptcha_v3.md
MForm ist ein tolles Addon um die Eingabeformulare einheitlich zu gestalten. In der Version 7 wurde der Dokumentationsstil auf die Darstellung als Verkettung über gegangen.
Mir gefällt die traditionellere Darstellung besser, ich lege darum hier ein paar Beispiele an: https://github.com/akuehnis/redaxo5_modul_beispiele/blob/master/mform_v7.md
Eingabe:
<fieldset class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label" for="text_1">Text 1</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="text_1" name="REX_INPUT_VALUE[1]" value="REX_VALUE[1]" />
</div>
</div>
</fieldset>
Ausgabe:
REX_VALUE[1]
Eingabe:
<fieldset class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label" for="text_2">Text 2</label>
<div class="col-sm-10">
<textarea rows="5" class="form-control" id="text_2" name="REX_INPUT_VALUE[2]" >REX_VALUE[2]</textarea>
</div>
</div>
</fieldset>
Ausgabe:
<!-- Ohne weitere Angaben werden Umbrüche in <br/> umgewandelt (nl2br) -->
REX_VALUE[2]
<!-- Ausgabe als HTML -->
REX_VALUE[id="2" output="html"]
Eingabe:
<?php
$options = array(
'' => 'Default',
'jumbotron' => 'Jumbotron',
'alert alert-info' => 'Info',
'alert alert-success' => 'Success',
'alert alert-warning' => 'Warning',
'alert alert-danger' => 'Danger',
);
?>
<fieldset class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label" for="select_example">Style</label>
<div class="col-sm-10">
<select id="select_example" name="REX_INPUT_VALUE[20]" class="form-control">
<?php
foreach($options as $key=>$option){
echo '<option value="'.$key.'"';
if( "REX_VALUE[20]" == $key){
echo ' selected="selected"';
}
echo '>'.$option.'</option>';
}
?></select>
</div>
</div>
</fieldset>
Ausgabe:
Gewählt: REX_VALUE[20]
Eingabe:
<?php
$options = array(
'wahl1' => 'Wahl 1',
'wahl2' => 'Wahl 2',
'wahl2' => 'Wahl 2',
);
?>
<fieldset class="form-horizontal">
<?php
foreach($options as $key=>$option){
?>
<div class="checkbox">
<label><input type="radio" name="REX_INPUT_VALUE[19]" value="<?php echo $key;?>"
<?php
if( "REX_VALUE[19]" == $key){
echo ' checked="checked"';
}
?> /> <?php echo $option;?></label>
</div>
<?php
}
?>
</fieldset>
Ausgabe:
Gewählt: REX_VALUE[19]
Eingabe:
<?php
$db = rex_sql::factory();
$db->setQuery("SELECT * FROM ".
rex::getTable('form_in_module')."
ORDER BY title ASC");
$rows = $db->getArray();
foreach ($rows as $row){
$options[$row['form_id']] = $row['title'];
}
?>
<fieldset class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label" for="select_example">Formular</label>
<div class="col-sm-10">
<select id="select_example" name="REX_INPUT_VALUE[1]" class="form-control">
<?php
foreach($options as $key=>$option){
echo '<option value="'.$key.'"';
if( "REX_VALUE[1]" == $key){
echo ' selected="selected"';
}
echo '>'.$option.'</option>';
}
?></select>
</div>
</div>
</fieldset>
Ausgabe:
<?php echo FormInModule::getForm(intval('REX_VALUE[1]'));?>
Eingabe
REX_MEDIA[id=1 widget=1 preview=1]
Ausgabe
<?php if(rex::isBackend()):?>
<img src="index.php?rex_media_type=rex_mediapool_preview&rex_media_file=REX_MEDIA[id=1]" />
<?php elseif ('' != 'REX_MEDIA[id=1]'): ?>
<img src="<?php echo rex_url::media("REX_MEDIA[id=1]");?>"
width="REX_MEDIA[id=1 field=width]"
height="REX_MEDIA[id=1 field=height]"
alt="REX_MEDIA[id=1 field=title]" />
<?php endif; ?>
Eingabe
REX_MEDIALIST[id=1 widget=1]
Ausgabe
<?php
if('' == "REX_MEDIALIST[id=1]"):
$images = array();
else:
$images = explode(',', "REX_MEDIALIST[id=1]");
endif;
if (rex::isBackend()):?>
<?php foreach($images as $image) :?>
<img src="index.php?rex_media_type=rex_mediapool_preview&rex_media_file=<?php echo $image;?>" />
<?php endforeach;?>
<?php else: ?>
<?php foreach($images as $image) :
$medium = rex_media::get($image);
?>
<img src="<?php echo $medium->getUrl();?>" alt="<?php
echo $medium->getTitle();?>" height="<?php
echo $medium->getHeight();?>" width="<?php
echo $medium->getWidth();?>" />
<?php endforeach; ?>
<?php endif;?>
Eingabe
REX_LINK[id=1 widget=1]
Ausgabe
<?php
$art = rex_article::get("REX_LINK[id=1]");
if ($art) {
$href = rex_getUrl("REX_LINK[id=1]");
$title = $art->getValue('title');
$name = $art->getValue('name');
echo '<a href="'.$href.'" title="'.$title.'" >'.$name.'</a>';
}
?>
Eingabe
REX_LINKLIST[id=1 widget=1]
Ausgabe
<?php
if ('' == "REX_LINKLIST[id=1]"){
$articles = array();
}else{
$articles = explode(',', "REX_LINKLIST[id=1]");
}
foreach($articles as $article_id){
$art = rex_article::get($article_id);
if (null !== $art){
$href = rex_getUrl($article_id);
$title = $art->getValue('title');
$name = $art->getValue('name');
echo '<a href="'.$href.'" title="'.$title.'" >'.$name.'</a>';
}
}
?>
Eingabe
<fieldset class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label" for="text_2">Artikel wird weitergeleitet nach *</label>
<div class="col-sm-10">
REX_LINK[id=1 widget=1]
</div>
</div>
</fieldset>
Ausgabe
<?php
if (!rex::isBackend() && rex_article::getCurrentId() != 'REX_LINK[id=1]' && 'REX_LINK[id=1]' != '') {
if (intval(REX_LINK[id=1]) != 0) {
rex_redirect(intval(REX_LINK[id=1]), rex_clang::getCurrentId());
}
}
else {
if (REX_LINK[id=1] != '') {
echo "Weiterleitung nach <a href='index.php?page=content&article_id=REX_LINK[id=1]&mode=edit'>Artikel REX_LINK[id=1]</a>";
}
}
?>
Eingabe
<fieldset class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label" for="text_1">URL</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="text_1" name="REX_INPUT_VALUE[1]" value="REX_VALUE[1]" />
</div>
</div>
</fieldset>
Ausgabe
<?php
if (rex::isBackend()):
echo 'Weiterleitung nach: REX_VALUE[1]';
elseif (!empty('REX_VALUE[1]')):
header("Location: REX_VALUE[1]");
die();
endif;
?>
Das Addon mblock muss installiert sein.
Eingabe
<?php
$id = 1; // Mblock wird das Feld value1 in der DB nutzen
$mform = new MForm();
$mform->addFieldset('Person');
$mform->addTextField("$id.0.title", array('label'=>'Bezeichnung'));
$mform->addTextareaField("$id.0.description", array('label'=>'Beschreibung'));
$mform->addMediaField(1, array('label'=>'Bild'));
$args = array();
echo MBlock::show($id, $mform->show(), $args);
?>
Ausgabe
<?php $list = rex_var::toArray("REX_VALUE[1]");?>
<?php foreach ($list as $row):?>
<div class="row person" >
<div class="col-xs-3">
<img class="img-circle img-responsive" src="index.php?rex_media_type=person&rex_media_file=<?php echo
$row['REX_MEDIA_1'];?>" />
</div>
<div class="col-xs-9 person_text">
<h6><?php echo $row['title'];?></h6>
<p><?php echo nl2br($row['description']);?></p>
</div>
</div>
<?php endforeach;?>
fullscreen,alignment,bold,italic,underline,deleted,sub,sup,unorderedlist,orderedlist,blockquote,table,cleaner,grouplink[email|external|internal|media],heading1,heading2,heading3,heading4,horizontalrule,media,paragraph,properties,source
Eingabe, erstellen der Auswahl für ein Select-Feld
if (!function_exists('buildMediaCateogryChoices')){
function buildMediaCateogryChoices($category = null, $level = 0){
static $choices = [];
if (null == $category){
$children = rex_media_category::getRootcategories();
} else {
$choices[$category->getId()] = str_repeat('-', $level).$category->getName();
$children = $category->getChildren();
}
foreach ($children as $child){
buildMediaCateogryChoices($child, $level+1);
}
return $choices;
}
}
$cat_choices = buildMediaCateogryChoices();
// Baue Formular (hier mit MForm)
$mform = new MForm();
$mform->addFieldset('Auswahl');
$mform->addSelectField("1", $cat_choices, array('label'=>'Kategorie'));
echo $mform->show();
Ausgabe (nur ein Schnipsel)
...
$category = rex_media_category::get(intval($category_id));
$list = $category->getMedia();
foreach ($list as $medium):?>
<img src="<?php echo rex_url::media($medium->getFileName();?>" alt="<?php echo $medium->getTitle();?>" />
<?php endforeach;?>
...