Merge branch 'develop' of https://github.com/octobercms/october into develop
This commit is contained in:
commit
8df92f4ba1
|
|
@ -467,6 +467,7 @@ class FormField
|
||||||
$triggerField = array_get($this->trigger, 'field');
|
$triggerField = array_get($this->trigger, 'field');
|
||||||
$triggerCondition = array_get($this->trigger, 'condition');
|
$triggerCondition = array_get($this->trigger, 'condition');
|
||||||
$triggerForm = $this->arrayName;
|
$triggerForm = $this->arrayName;
|
||||||
|
$triggerMulti = '';
|
||||||
|
|
||||||
// Apply these to container
|
// Apply these to container
|
||||||
if (in_array($triggerAction, ['hide', 'show']) && $position != 'container') {
|
if (in_array($triggerAction, ['hide', 'show']) && $position != 'container') {
|
||||||
|
|
@ -486,11 +487,18 @@ class FormField
|
||||||
$triggerForm = HtmlHelper::reduceNameHierarchy($triggerForm, $triggerFieldParentLevel);
|
$triggerForm = HtmlHelper::reduceNameHierarchy($triggerForm, $triggerFieldParentLevel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Preserve multi field types
|
||||||
|
if (Str::endsWith($triggerField, '[]')) {
|
||||||
|
$triggerField = substr($triggerField, 0, -2);
|
||||||
|
$triggerMulti = '[]';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Final compilation
|
||||||
if ($this->arrayName) {
|
if ($this->arrayName) {
|
||||||
$fullTriggerField = $triggerForm.'['.implode('][', HtmlHelper::nameToArray($triggerField)).']';
|
$fullTriggerField = $triggerForm.'['.implode('][', HtmlHelper::nameToArray($triggerField)).']'.$triggerMulti;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$fullTriggerField = $triggerField;
|
$fullTriggerField = $triggerField.$triggerMulti;
|
||||||
}
|
}
|
||||||
|
|
||||||
$newAttributes = [
|
$newAttributes = [
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Backend\Widgets\Form;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class FormTestModel extends Model
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class FormTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testCheckboxlistTrigger()
|
||||||
|
{
|
||||||
|
$form = new Form(null, [
|
||||||
|
'model' => new FormTestModel,
|
||||||
|
'arrayName' => 'array',
|
||||||
|
'fields' => [
|
||||||
|
'trigger' => [
|
||||||
|
'type' => 'checkboxlist',
|
||||||
|
'options' => [
|
||||||
|
'1' => 'Value One'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'triggered' => [
|
||||||
|
'type' => 'text',
|
||||||
|
'trigger' => [
|
||||||
|
'field' => 'trigger[]',
|
||||||
|
'action' => 'show',
|
||||||
|
'condition' => 'value[1]'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$form->render();
|
||||||
|
|
||||||
|
$attributes = $form->getField('triggered')->getAttributes('container', false);
|
||||||
|
$this->assertEquals('[name="array[trigger][]"]', array_get($attributes, 'data-trigger'));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue