これは、必須である管理側フォームのフィールドです。
<field name="exam_name"
type="text"
label="Name"
required="true" />
フォームでこのフィールドを空(null)にすると、検証エラーInvalid Fieldが表示されます。
しかし、スペースを残すと、データベースに保存されているページとスペースが送信されます。
特定のフィールドに空ではなくスペースがある場合でもフォームを検証する方法はありますか?
クライアント側の検証を使用できます。したがって、最初に以下をフォームビューに追加します(Joomlaのバージョンに応じて選択します)。
JHtml::_('behavior.formvalidation'); // Joomla 3.3
JHtml::_('behavior.formvalidator'); // Joomla 3.4
次に、form-validate
クラスをフォームに追加して、次のようにします。
<form class="form-validate">
次に、必要なクラスを次のようにフォームフィールドに追加します。
<field name="exam_name" class="required validate-custom"
次に、フォームの送信ボタンにも同じように適用します。
<input type="submit" class="required validate-custom"
そして最後に、次のjQueryを使用できます。
jQuery(document).ready(function($){
document.formvalidator.setHandler('custom', function (value) {
// Perform your validation for blank spaces
// You could use a regex or maybe trim the value
// Whatever method you prefer
});
});
モデルがJModelAdminまたはJModelFormを拡張する場合、モデルの検証機能を使用して、データベースに保存する前にクライアント入力を検証できます。
class MyComponentModelForm extends JModelAdmin
{
....
....
/* Override */
public function validate($form, $data, $group = null)
{
$data = parent::validate($form, $data, $group = null);
if(!$data || empty($data['myfield']))
{
JFactory::getApplication()->enqueueMessage(JText::_('COM_MYCOMPONENT_FIELD_REQUIRED'));
return false;
}
return $data;
}
}