Cakephp 3.0 изменит или удалит обертку div на форме ввода
Я пытаюсь удалить или изменить оберточный div, который CakePHP использует в его вспомогательном элементе формы.
Когда я использую этот код:
echo $this->Form->input('contact', ['label' => false]);
Вывод:
<div class="input text">
<input type="text" id="contact" maxlength="255" name="contact">
</div>
И я хочу:
<div class="myOwnClass">
<input type="text" id="contact" maxlength="255" name="contact">
</div>
Я использовал это на CakePHP 2, добавляя больше параметров для метода ввода, однако в последней версии CakePHP это не работает. Любые подсказки?
Спасибо
Ответы
Ответ 1
Использовать шаблоны FormHelper
Чтобы изменить обертку для всех входов в форме:
$this->Form->templates([
'inputContainer' => '<div class="myOwnClass">{{content}}</div>'
]);
// or remove completely
$this->Form->templates([
'inputContainer' => '{{content}}'
]);
// now get input with desired wrapping
echo $this->Form->input('contact', [
'label' => false
]);
Чтобы изменить обертку для одного входа, используйте:
echo $this->Form->input('contact', [
'templates' => [
'inputContainer' => '<div class="myOwnClass">{{content}}</div>'
],
'label' => false
]);
Для полной справки о шаблонах читайте: Настройка шаблонов FormHelper Uses
Стиль CakePHP 2 для настройки обертки больше не поддерживается в версии 3. Из руководства по миграции:
Параметры div, до, после, между и errorMessage были удалено из ввода(). Вы можете использовать шаблоны для обновления упаковки HTML. Параметр шаблонов позволяет переопределить загруженные шаблоны для одного входа.
Ответ 2
Я работаю с приобретенным пользовательским интерфейсом, и у меня было несколько проблем с cakephp3 me, не так просто удалить начальную, большую часть предлагаемого здесь решения после долгих испытаний:
echo $this->Form->input('username', [
'templates' => [
'inputContainer' => '{{content}}'
],
"type" => "text",
"aria-invalid" => "false",
"aria-required" => "true",
"class" => "form-control valid",
"placeholder" => "Ingrese su usuario o email ...",
"autocomplete" => "on",
'label' => false
]);
результат
<input name="username" aria-invalid="false" aria-required="true" class="form-control valid" placeholder="Ingrese su usuario o email ..." autocomplete="on" id="username" type="text">
добавляет только тег ввода (извините за мой Google-английский)
Ответ 3
Я думаю, что это лучший способ определить шаблоны global в папке config:
<?= $this->Form->create($user, array(
"class" => "ui form",
"templates" => "semantic" // The filename in your config folder without .php
)); ?>
В папке config создайте файл "semantic.php" (вы можете назвать его как угодно) с контентом:
return array(
"inputContainer" => '{{content}}' // Here the magic happens
);
Надеюсь, это поможет!