に[OK]を、あなたの代わりにformRow()
のformLabel()
、formElement()
とformElementErrors()
ビューヘルパーを使用する必要があります。
私のZF2の知識によれば、formRow()
ビューヘルパーでは、HTML出力を簡単に制御することはできません。 1行のコードに完全な入力HTML(ラベル+入力+エラー)を表示します。
は、単にあなたの目標を達成するために、一つの入力のためのあなたのPHTML構造は以下の通りである必要があります:
// NAME_OF_YOUR_FILE.phtml
<?php
$userNameInput = $form->get('username');
$userNameInputErrors = $this->formElementErrors($userNameInput);
?>
<fieldset class="<?= $userNameInputErrors ? 'has-danger' : '' ?>" >
<?= $this->formLabel($userNameInput) ?>
<?= $this->formElement($userNameInput) ?>
<?= $userNameInputErrors ?>
</fieldset>
これは、フォーム内の各フィールドのためにこれを行うにはハードワークであるので、私はあなたがこれを置くことを提案しますビューヘルパーのロジック。
// MyFormRow.php
<?php
namespace Your\Namespace;
use Zend\View\Helper\AbstractHelper;
class MyFormRow extends AbstractHelper
{
protected $formLabelViewHelper;
protected $formElementViewHelper;
protected $formElementErrorsViewHelper;
public function __construct($formLabelViewHelper, $formElementViewHelper, $formElementErrorsViewHelper)
{
$this->formLabelViewHelper = $formLabelViewHelper;
$this->formElementViewHelper = $formElementViewHelper;
$this->formElementErrorsViewHelper = $formElementErrorsViewHelper;
}
public function __invoke($formElement)
{
$html = '';
$errors = $this->formElementErrorsViewHelper->__invoke($formElement);
$html .= '<fieldset class=" . ($errors ? 'has-danger' : '') . ">';
$html .= $this->formLabelViewHelper->__invoke($formElement);
$html .= $this->formElementViewHelper->__invoke($formElement);
$html .= $errors;
$html .= '</fieldset>';
return $html;
}
}
?>
Module.php
で宣言してください。あなたのPHTMLファイル内
// In your Module.php
<?php
...
public function getViewHelperConfig()
{
return [
'factories' => [
'myFormRow' => function (HelperPluginManager $helperPluginManager) {
$formLabelViewHelper = $helperPluginManager->get('formLabel');
$formElementViewHelper = $helperPluginManager->get('formElement');
$formElementErrorsViewHelper = $helperPluginManager->get('formElementErrors');
return new MyFormRow($formLabelViewHelper, $formElementViewHelper, $formElementErrorsViewHelper);
},
],
];
}
?>
そして今、単に:
// NAME_OF_YOUR_FILE.phtml
...
<?= echo $this->myFormRow($form->get('username')) ?>
...
こんにちはする@ user1989781は、あなたがより精度のためにあなたの*の.phtmlコードを貼り付けることができますか? – jbrtrnd
可能な回答はこちらhttp://stackoverflow.com/questions/24183321/in-zf2-how-to-add-a-error-css-class-on-validation-failed – dixromos98